Question

A QtGui.QLineEdit line_edit widget is placed inside of QtGui.QFormLayout Form layout using .addRow() method.

my_formLayout.addRow(my_label, my_lineEdit) 

To make a line_edit widget to stick to a dialog window's edges (so it re-sizes with the dialog) tried using sizePolicy:

    sizePolicy = my_lineEdit.sizePolicy()
    sizePolicy.setHorizontalStretch(1)
    my_lineEdit.setSizePolicy( sizePolicy )

There are no errors. But the line_edit widget still doesn't stick to the edges of the dialog... What could be wrong?

Was it helpful?

Solution

You shouldn't need to do anything.

This simple example resizes as necessary:

from PyQt4 import QtGui

class Dialog(QtGui.QDialog):
    def __init__(self):
        super(Dialog, self).__init__()
        form = QtGui.QFormLayout(self)
        label = QtGui.QLabel('Label', self)
        edit = QtGui.QLineEdit(self)
        form.addRow(label, edit)

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Dialog()
    window.setGeometry(500, 300, 300, 50)
    window.show()
    sys.exit(app.exec_())

UPDATE:

Okay, it seems the behaviour of QFormaLayout is platform-dependent. To quote from the docs:

Style based on the Mac OS X Aqua guidelines. Labels are right-aligned, the fields don't grow beyond their size hint, and the form is horizontally centered.

However, there is a setFieldGrowthPolicy method, which could be used to over-ride the default behaviour on Mac OSX. So try:

    my_formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.ExpandingFieldsGrow)

or:

    my_formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow)

OTHER TIPS

Try this: sizePolicy.setHorizontalPolicy(QSizePolicy.Expanding)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top