【发布时间】:2015-02-25 02:17:35
【问题描述】:
我有一个 QTabWidget 工作正常,只是它没有按照我的预期重新调整大小。
小部件中有 2 个选项卡。每个都有一个带有小部件的 QVBoxLayout。 VBox 也可以正常工作。
问题是第一个选项卡的布局中的小部件比第二个选项卡多。查看第一个选项卡时,选项卡的大小以适当地包含其中的小部件。但是,在查看第二个选项卡时,选项卡小部件的大小与第一个相同,而不是重新调整为可见小部件的大小。
这是预期的行为吗?如果是这样,有什么好的解决方法?我希望标签小部件始终缩放到当前活动的小部件。
编辑: 这是该问题的一个示例。期望的行为是让 Tab B 缩小到适当的大小,这可以通过注释掉下面提到的行来看到。
#!/bin/python
import sys
from PySide import QtGui, QtCore
class TabExample(QtGui.QWidget):
def __init__(self):
super(TabExample, self).__init__()
self.initUI()
def initUI(self):
self.vbox_main = QtGui.QVBoxLayout()
self.table_blank = QtGui.QTableWidget(10, 4)
self.tabw = QtGui.QTabWidget()
self.tab_A = QtGui.QWidget()
self.vbox_A = QtGui.QVBoxLayout(self.tab_A)
for i in range(20):
lab = QtGui.QLabel('label %d' %i)
self.vbox_A.addWidget(lab)
self.tab_B = QtGui.QWidget()
self.vbox_B = QtGui.QVBoxLayout(self.tab_B)
for i in range(5):
lab = QtGui.QLabel('labelB %d'%i)
self.vbox_B.addWidget(lab)
#COMMENT OUT NEXT LINE TO SEE DESIRED SIZE OF TAB B
self.tabw.addTab(self.tab_A, 'Tab A')
self.tabw.addTab(self.tab_B, 'Tab B')
self.vbox_main.addWidget(self.table_blank, 1)
self.vbox_main.addWidget(self.tabw)
self.setLayout(self.vbox_main)
self.setGeometry(0,0, 400, 600)
self.move(QtGui.QDesktopWidget().availableGeometry().center() - self.frameGeometry().center())
self.show()
def main():
app = QtGui.QApplication(sys.argv)
tabExample = TabExample()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
【问题讨论】:
-
两个选项卡都有自己的布局。看来您没有正确设置第二个选项卡的布局。请发布相关代码,并可能包含一些图片来说明您的问题。
-
QTabWidget 应该(默认情况下)足够大以显示其任何选项卡,但如果当前选项卡可以容纳更少的空间,则不会缩小。如果是这种情况,您可以在较小选项卡的布局中添加一个分隔符,以使其内容保持在合理的大小。
-
我已经更新了一个代码示例。感谢您的帮助!
-
我应该在哪里添加垫片?