[PyQt] Re: dialogs and extentions

Mark Summerfield mark at qtrac.eu
Wed Oct 29 15:02:33 GMT 2008


On 2008-10-29, Wim Verhavert wrote:
> I already found out that you can set the orientation with a call to
> 'setOrientation(Qt.Vertical)'. That solves my problem for now. But
> while I was searching for a solution I found the following:
> http://doc.trolltech.com/4.4/qdialog-obsolete.html. There they state
> that my solution is obsolete and "we strongly advise against using
> them in new code". But the new method they propose, i.e. simply hide
> or show the widgets, will not resize my dialog properly (it will only
> grow and not shrink). I played around with this for a while but
> couldn't get it to working. Has anybody done it using this new method.
> Does it shrink properly again? How do you do it?

A technique for doing what you want is to:
(1) Put all the widgets that belong in the extension inside a QFrame
    that is itself laid out as usual
(2) In the form's __init__
    (a) hide the frame (thus hiding all the widgets it contains)
    (b) call: self.layout().setSizeConstraint(QLayout.SetFixedSize)
    (c) connect the button widget you're using to hide/show the
	extension's toggled(bool) signal to the frame's setVisible(bool)
	slot.

Using this approach the dialog shrinks or grows as appropriate. The only
downside is that it is not user resizeable.

An example is in my book "Rapid GUI Programming with Python and Qt", and
you can download the examples from here:
http://www.qtrac.eu/pyqtbook.html

The example is:
    eg/chap09/findandreplace.{py,pyw} 
(the .pyw version is all in code the .py version's form is a .ui file)


-- 
Mark Summerfield, Qtrac Ltd, www.qtrac.eu
    C++, Python, Qt, PyQt - training and consultancy
        "C++ GUI Programming with Qt 4" - ISBN 0132354160



More information about the PyQt mailing list