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



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

(这个问题处理了类似的问题,尽管在这种情况下,用户可以调整窗口的大小。我也不清楚OP在那种情况下到底做了什么。)

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

resize(minimumSizeHint());

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

就像:

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

一个更好的解决方案是单次触发QTimer,它调用一个插槽,您可以在其中将窗口调整到最小值。这样,当调整窗口大小时,可以正确计算最小大小提示。

void QWidget::adjustSize()

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

相关内容

  • 没有找到相关文章