0

在 Qt 中,我怎样才能拥有一个根据其子项的大小自动调整自身大小的小部件?

例如,如果我有一个QGroupBox包含一个QHBoxLayout包含一些QPushButtons 的 a,我希望QGroupBox自动计算它的大小,以便它不会大于或小于适合所有QPushButtons 所需的大小。

理想情况下,我希望能够在 Qt Designer 中执行此操作,以便我可以创建一个.ui已经知道如何调整大小的文件QGroupBox,但是我也可以从文件中的类派生.ui并手动调整大小。

我已经尝试将QGroupBox内部放置它自己的布局(有和没有垫片),但这只是将其调整为QGroupBox尽可能小的尺寸,以便没有一个孩子是可见的。

4

2 回答 2

1

有两点需要注意:

  1. 为 groupbox 中的子项设置适当的大小策略。您确实需要考虑按钮可以做什么 - 很可能,您不希望按钮增长或缩小,因此将它们的大小策略设置Fixed为正确的做法。你可以,可能,让按钮水平扩展,所以水平策略MinimumExpanding是一个选项。

  2. 根据您的目标设置分组框中布局的大小约束:

    ui->groupbox->layout()->setConstraint(QLayout::SetMinAndMaxSize);
    

当然,groupbox 将在其父窗口中的某个布局内,但这并不重要。

于 2013-10-17T13:38:28.380 回答
0

通过对 QGroupBox 进行子类化并覆盖 sizeHint 或其他大小调整函数来循环遍历子项并计算最小边界矩形,您可能会获得最大的运气。根据组框的动态程度,管理与新小部件的连接可能是一个小挑战。

于 2013-10-17T20:06:57.607 回答