views:

266

answers:

1

I'm using the nice feature in QMessageBox to optionally show detailed text to the user. However, the window after expansion is still fairly small, and one immediately tries to resize the window so more of the details are visible. Even after setting what I think are the proper settings it won't allow resizing.

Here's the relevant snippet of PyQt4 code:


    mb = QMessageBox()
    mb.setText("Results written to '%s'" % filename)
    mb.setDetailedText(str(myData))
    mb.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
    mb.setSizeGripEnabled(True)

Am I missing a step and/or is this at all possible?

+1  A: 

if you're looking to make a resizable message box, pls, check if code below would work for you:

class MyMessageBox(QtGui.QMessageBox):
    def __init__(self):
        QtGui.QMessageBox.__init__(self)
        self.setSizeGripEnabled(True)

    def event(self, e):
        result = QtGui.QMessageBox.event(self, e)

        self.setMinimumHeight(0)
        self.setMaximumHeight(16777215)
        self.setMinimumWidth(0)
        self.setMaximumWidth(16777215)
        self.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)

        textEdit = self.findChild(QtGui.QTextEdit)
        if textEdit != None :
            textEdit.setMinimumHeight(0)
            textEdit.setMaximumHeight(16777215)
            textEdit.setMinimumWidth(0)
            textEdit.setMaximumWidth(16777215)
            textEdit.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)

        return result

here's how messagebox is called:

mb = MyMessageBox()
mb.setText("Results written to '%s'" % 'some_file_name')
mb.setDetailedText('some text')
mb.exec_()

solution is taken from here

hope this helps, regards

serge_gubenko
This is definitely on the right track (shame it has to be done in the event handler). The dialog does resize now, but all the resizing goes to the label at the top, and not the text box. I spent about half an hour playing with setting the `sizePolicy` of the other components and the `rowStretch` of the underlying layout, but didn't get any further. It's definitely better than what I had. I'll post a followup if I figure out how to give all the extra vertical space to the text area.
Simeon Fitch