[PyKDE] Issue with QDialog and lifetime

Giovanni Bajo rasky at develer.com
Thu May 26 13:16:56 BST 2005


Toby Dickenson <tdickenson at devmail.geminidataloggers.co.uk> wrote:

>> class QDialog2(QDialog):
>>    def __init__(self, parent=0, name=0, modal=False, flags=0)
>>        QDialog.__init__(self, parent, name, modal, flags |
>> Qt.WDestructiveClose)

Actually, for my project, I'm better off with:

class QDialog2(QDialog):
   def __init__(self, parent=0, name=0, modal=False, flags=0)
        if modal:
            flags |= Qt.WDestructiveClose
       QDialog.__init__(self, parent, name, modal, flags)

Becuase modeless dialogs really need their ownership to be transferred to
the parent.

> That works, but Im not sure I would recommend it. It leads to a bigger
change
> should you ever need to access the dialog after it has been closed. (or,
more
> likely, the value of a control widget on the dialog)

Notice that WDestructiveClose does not collect the Python object (of
course). So you can easily do something like:

class MyDialog(QDialog2):
     # bla bla

     def accept(self):
         self.value = self.lineedit.text()

and then later access that string.
-- 
Giovanni Bajo




More information about the PyQt mailing list