如何在PyQt4中设置子窗口大小与其父窗口的自动调整大小?

问题描述:

我的pyQt4应用程序有主对话框,它的内容选项卡控件然后是它的子组件。如何在PyQt4中设置子窗口大小与其父窗口的自动调整大小?

我想要的是,当用户点击最大化按钮或调整大小主窗口,然后按Tab控件的大小以及其零部件的位置应自动更新。

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

+0

在这里得到了解决方案! http://*.com/questions/3492739/auto-expanding-layout-with-qt-designer – anils 2012-01-22 15:12:37

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

要下手,右键单击标签控件的每个选项卡,然后从菜单中选择Layout/Layout in a Grid。工具栏上还有一个按钮,它可以做同样的事情(图标是一个蓝色小方格)。

一旦你设置每个选项卡上的布局,做同样的事情为主要形式为好。

注意,有时更容易选择和比窗体本身Object Inspector中右键单击该项目。对象检查器还会在窗体中的每个项目旁边显示一个图标,该图标已被赋予布局。

一旦你设置你所有的布局,使用Form/Preview...检查一切正常,你的预期。

+0

谢谢ekhumoro,它的工作原理! – anils 2012-01-22 15:10:22

使用布局如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_() 

这会QHBoxLayout内添加两个QPushButton s到一个QMainWindow。这意味着他们将彼此相邻,并且他们将分别填满他们的一半窗口。 QPushButton s恰巧只能水平填充(除非您设置了大小策略),但QTabWidget将填充所有可用空间。