我有一个 QMainWindow,其中的小部件排列在网格中。当窗口按预期调整大小时,它们都会按比例调整大小,除了放置在 QGroupBox 内的小部件。 QGroupBox 本身会调整大小,但内部的小部件只会保持在同一位置。如果我在 QGroupBox 上应用布局,小部件将失去其原始位置。请注意,我将 .ui 文件与 PyQt4 一起使用。您可以在此处获取该文件。
这就是发生的事情:
QGroupBox 不会自动布局子部件(它们是 通常是 QCheckBoxes 或 QRadioButtons,但可以是任何小部件)。
有一个示例展示了如何为
QGroupBox
设置布局(这与为任何基于 QWidget
的对象设置布局相同,旨在存储其他对象,例如 QFrame
)。
您必须创建一个布局,调用
QGroupBox::setLayout
,然后将小部件添加到布局中。如果您使用 QtCreator,请右键单击 QGroupBox
并从上下文菜单中选择要使用的布局。
您还可以通过重写 QWidget 的 resizeEvent 以编程方式解决此问题:
void CustomInput::resizeEvent(QResizeEvent *e) {
// Call the original resize from base class
QWidget::resizeEvent(e);
// Only attempt to resize if box exists and the driving event is not app start
if (groupBox != NULL && e->oldSize().width() > 0) {
// Update
groupBox->resize(e->size().width(), groupBox->height());
}
}