亲爱的StackOverflow社区,
在以下代码中,QTreeView小部件始终占据最大空间,而为QPushButton小部件保留最小空间(代码后的图像)。如果将QTreeView小部件替换为另一个QPushButton(在注释掉代码#1和注释代码#2时),则两个按钮将获得相等的屏幕空间。如果将QPushButton小部件替换为两个QTreeView小部件,则两个小部件之间的空间也将平均分配。
我的问题是,关于屏幕空间,为什么QTreeView比其他诸如QPushButton的小部件更受青睐,我又如何避免它(如何在两个小部件之间平均分配空间?)>
到目前为止,我已经发现,唯一起作用的函数是setFixedSize或setFixedWidth,它们都是非首选解决方案。
import sys from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QTreeView, QPushButton, QHBoxLayout class TestClass(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.main_window = QMainWindow() self.main_widget = QWidget() self.main_layout = QHBoxLayout() self.random_tree = QTreeView() # <--- Code #1 self.random_button = QPushButton('Test Button') # self.random_button_2 = QPushButton('Test Button') # <--- Code #2 self.main_layout.addWidget(self.random_tree) # <--- Code #1 self.main_layout.addWidget(self.random_button) # self.main_layout.addWidget(self.random_button_2) # <--- Code #2 self.main_widget.setLayout(self.main_layout) self.main_window.setCentralWidget(self.main_widget) def show(self): self.main_window.show() if __name__ == "__main__": app = QApplication(sys.argv) window = TestClass() window.show() sys.exit(app.exec_())
这里是图片,描述了情况:
QTreeView是自私的
QPushButton小部件以友好方式共享屏幕
亲爱的StackOverflow社区,在以下代码中,QTreeView小部件始终占据最大空间,而为QPushButton小部件保留最小空间(代码后的图像)。如果QTreeView ...
默认情况下,添加到布局的项目的拉伸因子为0,在这种情况下,布局将考虑每个小部件的QSizePolicy来计算每个小部件的宽度,在这种情况下,它指出QTreeView将展开。