2014-01-10 95 views
1

在QtDesigner中,我创建了带水平布局的QFrame(layoutSpacing为5)。其中有3个QLineEdit小部件,其中固定尺寸和水平间隔尺寸扩大(所以当改变框架尺寸时,只改变间隔尺寸)更新 - 刷新布局

假设lineEdits的初始尺寸为100x30。我需要改变lineEdit小部件的大小,我这样做,从这样的代码:

self.__ui.lineEdit1.resize(40, 30) 
self.__ui.lineEdit2.resize(140, 30) 
self.__ui.lineEdit3.resize(80, 30) 

它们的大小被改变,但他们的X位置也不是那么我得到第一个两(65)之间的大空间,并且lineEdit2低于lineEdit3。

我应该以某种方式更新布局或框架吗?我试过layout.setSpacing(5)前后提到的代码,但在lineEdit的这种情况下,大小没有改变(这是最初的100再次)

编辑这里是截图(我在油漆编辑:d )作为巡礼纪念日要求:enter image description here

+0

你可以在调用'resize'之前和之后发布截图吗? – qurban

+0

@qurban请看看编辑我的问题 – Aleksandar

+1

每次你想调整窗口小部件的大小时,使用'setFixedSize()'而不是'resize()',正如ekhumoro在他的回答中所建议的那样。该解决方案符合您的要求。 – qurban

回答

1

使用setFixedSize方法:

self.__ui.lineEdit1.setFixedSize(40, 30) 
    self.__ui.lineEdit2.setFixedSize(140, 30) 
    self.__ui.lineEdit3.setFixedSize(80, 30) 

您也可能要考虑使用水平布局的layoutStretch财产。这使您可以设置每行编辑所允许的空间比例。所以如果你把它设置为“1,4,2”,那么第二行编辑会得到4倍于第一行的空间,而第三行将会增加两倍。关于这一点的好处是它在主窗口调整大小时自动缩放。

+0

就是这样,谢谢 – Aleksandar