为什么 QGroupBox 小部件不会随窗口的其余部分动态调整大小?

问题描述 投票:0回答:2

我有一个 QMainWindow,其中的小部件排列在网格中。当窗口按预期调整大小时,它们都会按比例调整大小,除了放置在 QGroupBox 内的小部件。 QGroupBox 本身会调整大小,但内部的小部件只会保持在同一位置。如果我在 QGroupBox 上应用布局,小部件将失去其原始位置。请注意,我将 .ui 文件与 PyQt4 一起使用。您可以在此处获取该文件。

这就是发生的事情:

qt resize pyqt qwidget qgroupbox
2个回答
6
投票

来自 QGroupBox 上的 Qt 文档

QGroupBox 不会自动布局子部件(它们是 通常是 QCheckBoxes 或 QRadioButtons,但可以是任何小部件)。

有一个示例展示了如何为

QGroupBox
设置布局(这与为任何基于
QWidget
的对象设置布局相同,旨在存储其他对象,例如
QFrame
)。

您必须创建一个布局,调用

QGroupBox::setLayout
,然后将小部件添加到布局中。如果您使用 QtCreator,请右键单击
QGroupBox
并从上下文菜单中选择要使用的布局。


0
投票

您还可以通过重写 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());
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.