【问题标题】:shrink the parent window instead of having other widgets grow缩小父窗口而不是让其他小部件增长
【发布时间】:2011-06-07 01:28:15
【问题描述】:

我有一个窗口,它只包含一个组合框,它在 QVBoxLayout 中包含更多的组合框(这些组合框的内容也没有固定大小)。这些内部组合框是可选中的,取消选中它们会折叠它们(折叠的组合框的高度减少(最大)为 30px 并且 isFlat==true)。

我想要实现的是: 当其中一个内部 groupbox 折叠时,外部 groupbox 和窗口应相应缩小(当前其他未折叠的 groupbox 会增长)。但是用户应该仍然可以调整窗口大小,这应该会导致 groupboxes 相应地增长:

我正在玩弄不同布局/小部件的QWidget::setSizePolicyQLayout::setSizeConstraint,但还没有得到令人满意的结果..
实现这一目标的最佳方法是什么?这可以在不实现您自己的尺寸提示功能的情况下完成吗?

【问题讨论】:

  • 我不是可用性专家,但这听起来是个坏主意。就个人而言,我不喜欢自动调整大小的窗口。
  • @Job:如果您取消选中其中一个内部组框,他们只会这样做。我可以在自动调整组框大小和自动调整窗口大小之间进行选择...并且在我的情况下调整内部组框的大小很难看,所以如果用户只取消选中其他组框之一,我想避免这种情况...如果用户自己调整窗口大小,我无法避免,但这还不错,因为很明显,调整窗口大小意味着必须重新排列内容..

标签: qt user-interface layout qt4


【解决方案1】:

我做了一个玩具箱,似乎有你通过调用需要的行为

adjustSize();

调整内部 QGroupBox 的大小后,在父 QGroupBox 上。我把它做成了一个插槽,这样我就可以将它连接到为方便起见调整内部分组框大小的相同信号。

【讨论】:

  • hmmm 如果我打电话给adjustSize(),外部 QGroupBox 不再自行拉伸以适应窗口,窗口也不会收缩以适应组框。
  • 我猜你的尺寸设置现在覆盖了我看到的行为,你能分享更多代码吗?
  • 由于它是一个封闭源项目,抱歉,我无法发布代码,但我可以告诉您,我们正在使用的组框类的折叠功能(用于内部组框)应该与 @987654321 非常相似@(所以尝试将其用作内部组框)。还要确保内部分组框中有可以展开的内容 ((widget.sizePolicy() | QSizePolicy::GrowFlag) == true)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多