根据窗口内容自动调整窗口大小

时间:2015-02-26 17:30:56

标签: qt qt5

我有一个QDialog子类,它包含一个spacer作为唯一的直接子项;所有窗口的UI元素都包含在spacer中。用户不能直接更改窗口大小,但是当用户与窗口交互时,将显示或隐藏UI元素。我希望每次发生这种情况时都要调整对话框的大小,以便间隔符(和对话框本身)总是占用尽可能少的空间。如何配置我的对话框和我的间隔符以获得所需的行为?

This question处理了类似的事情,尽管在这种情况下用户能够调整窗口大小。我也不清楚OP在这种情况下最终做了什么。)

2 个答案:

答案 0 :(得分:1)

您可以在更改窗口小部件数量后将窗口大小调整为minimumSizeHint()

resize(minimumSizeHint());

这会将窗口缩小到最小尺寸。但是,您应该考虑在事件循环中处理某些事件之前不会计算最小大小。因此,在隐藏了一些小部件并显示其他小部件后,只需处理事件循环一些迭代,然后调整大小到最小值。

就像:

for(int i=0;i<10;i++)
   qApp->processEvents();

resize(minimumSizeHint());

更好的解决方案是单击QTimer调用一个插槽,在该插槽中将窗口的大小调整到最小。这样,当您调整窗口大小时,将正确计算最小大小提示。

答案 1 :(得分:0)

  

void QWidget::adjustSize()

     

调整小部件的大小以适合其内容。