Resize QMainWindow to minimal size after content of layout changes
我正在使用
如果增加按钮的数量,则网格和窗口将增长得恰到好处;但是,如果减少了按钮的数量,它将如下所示:
现在,我想调整窗口/布局/小部件的大小,以便所有按钮都可以使用最小的空间。我已经尝试了各种方法,但都无济于事。我看过这个问题和这个问题,以及Qt板中的各种线程,但没有一个对我有用。
我的布局如下构建:
1 2 3 4 5 6 7 8 9 10 11 | 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) |
我尝试使用...
调整其大小
1 2 3 | self.widget.layout().activate() self.resize(self.minimumSize()) # self.resize(self.sizeHint()) |
...和其他各种方法。我还尝试设置窗口和网格的大小策略。
更改小部件数量后,可以将窗口的大小调整为?x0>:
1 | self.resize(minimumSizeHint()) |
这会将窗口缩小到最小尺寸。但是,您应该考虑到只有在事件循环中处理了一些事件之后,才会计算出最小大小。因此,当更改按钮数量时,只需处理事件循环进行一些迭代,然后将其大小调整为最小即可。
就像:
1 2 3 4 | for i in range(0, 10): QApplication.processEvents() self.resize(minimumSizeHint()) |
另一种选择是单拍