如何设置子窗口大小相对于PyQt4中的父窗口自动调整大小?

时间:2012-01-06 13:33:19

标签: qt pyqt4 qt-designer

我的pyQt4应用程序有主对话框,内容选项卡控件然后是子组件。

我想要的是,当用户点击最大化按钮或调整主窗口大小时,应该自动更新标签控件大小及其组件位置。

类似于java swing应用程序中的水平可调整大小,垂直可调整大小的属性。

2 个答案:

答案 0 :(得分:2)

如果您在Qt Designer中创建了对话框,请确保已正确设置所有布局。

首先,右键单击选项卡小部件的每个选项卡,然后从菜单中选择Layout/Layout in a Grid。工具栏上还有一个按钮可以执行相同的操作(图标是一个小蓝色方块的网格)。

在每个标签上设置布局后,也可以对主窗体执行相同的操作。

请注意,有时更容易选择并右键单击Object Inspector中的项而不是Form本身。对象检查器还在表单中的每个项目旁边显示一个图标,该图标已被赋予布局。

设置好所有布局后,使用Form/Preview...检查一切是否符合预期。

答案 1 :(得分:1)

使用QHBoxLayoutQVBoxLayout等布局。

from PySide.QtCore import *
from PySide.QtGui import *

app = QApplication([])

win = QMainWindow()

frame = QFrame()
win.setCentralWidget(frame)

layout = QHBoxLayout()
frame.setLayout(layout)

layout.addWidget(QPushButton("Expanding Button"))
layout.addWidget(QPushButton("Another Expanding Button"))

win.show()

app.exec_()

这会在QPushButton内向QMainWindow添加两个QHBoxLayout。这意味着它们将彼此相邻,并且它们将填充它们的一半窗口。 QPushButton碰巧只是水平填充(除非您设置了尺寸政策),但QTabWidget将填满所有可用空间。