标签:python layout qt pyqt qmainwindow
我正在使用QMainWindow的子类,我在其中声明了一个中心小部件.这个小部件包含一个QGridLayout,它包含一组按钮.按钮的数量可以增大或缩小,具体取决于用户的输入.间距设置为零,因此所有按钮都聚集在一起.默认情况下,它看起来像这样:
如果按钮数量增加,网格和窗口也会变得很好;但是,如果按钮数量减少,它将如下所示:
现在我想调整窗口/布局/窗口小部件的大小,以便所有按钮都可以使用最小的空间.我尝试了各种各样的东西,但都无济于事.我看了this和this的问题,以及Qt板上的各种线程,但它们都没有为我工作.
我的布局构建如下:
self.grid = QtGui.QGridLayout()
self.grid.setSpacing(0)
hBox = QtGui.QHBoxLayout()
hBox.addWidget(...)
vBox = QtGui.QVBoxLayout(self.widget)
vBox.addLayout(hBox)
vBox.addLayout(self.grid)
self.setCentralWidget(self.widget)
我尝试用它调整大小…
self.widget.layout().activate()
self.resize(self.minimumSize())
# self.resize(self.sizeHint())
……以及其他各种方法.我也尝试设置窗口和网格的大小策略.
解决方法:
更改窗口小部件的数量后,您可以将窗口的大小调整为minimumSizeHint():
self.resize(minimumSizeHint())
这会将窗口缩小到最小尺寸.但是,您应该考虑在事件循环中处理某些事件之前不会计算最小大小.因此,当更改按钮数量时,只需处理事件循环一些迭代,然后调整大小到最小值.
就像是 :
for i in range(0, 10):
QApplication.processEvents()
self.resize(minimumSizeHint())
另一个选择是单击一个QTimer,它调用一个槽,在这个槽中你可以将窗口的大小调整到最小.这样,当您调整窗口大小时,将正确计算最小大小提示.
标签:python,layout,qt,pyqt,qmainwindow 来源: https://codeday.me/bug/20190623/1275413.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。