【问题标题】:Widget same size as it's children?小部件和它的孩子一样大小?
【发布时间】:2013-10-17 13:24:10
【问题描述】:

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

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

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

我尝试将QGroupBox 放在它自己的布局中(有和没有间隔),但这只是将QGroupBox 调整为尽可能小的尺寸,这样所有子项都不可见。

【问题讨论】:

    标签: c++ qt user-interface resize widget


    【解决方案1】:

    有两点需要注意:

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

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

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

    当然,组框会在其父窗口的一些布局内,但这没关系。

    【讨论】:

    • 我已经完成了(1)。我不清楚 (2) - 问题是我希望 groupbox 根据其子项找出它自己的最小和最大尺寸。您的示例似乎暗示我已经指定了 groupbox 的大小,除非我误解了?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-01-28
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      相关资源
      最近更新 更多