基于子窗口小部件调整QMainWindow的大小?

NFR*_*RCR 6 c++ qt

子父层次结构如下:mainWindow - > centralWidget - > frame - > widget.

小部件在应用程序生命周期中正在调整大小,但始终设置为固定大小.我希望QMainWindow基于此调整大小 - 具有显示所有小部件所需的最小大小.

要做到这一点,我目前必须这样做.

widget->setFixedSize(x, y);
frame->setFixedSize(frame->sizeHint());
centralWidget->setFixedSize(centralWidget->sizeHint());
mainWindow->setFixedSize(mainWindow->sizeHint());
Run Code Online (Sandbox Code Playgroud)

如果我只调整主窗口的大小,它将无法正常工作.小部件的所有父级都需要调整大小才能使其工作.有更优雅的方式吗?是否可以让主窗口调用调整其所有孩子的大小?

注意:除"小部件"之外的所有小部件都具有自动布局管理功能.所以我觉得奇怪的是他们没有根据'小部件'调整自己的大小.

sho*_*fee 2

布局的工作是确定小部件的大小和位置。因此,如果您显式调整布局内的子窗口小部件的大小,则需要确保新的大小通过布局系统正确传递。这可以通过确保 widget\xe2\x80\x99s sizeHint() 返回新大小来完成。当布局计算新大小时,将使用 sizeHint() 返回的值。因此,在 sizeHint() 更改后,只需调用 updateGeometry() [qt.nokia.com],它将通知布局系统小部件已更改并且可能需要更改几何形状。

\n\n

确保父窗口小部件根据其子窗口小部件的大小调整而调整大小的另一种方法是在子窗口小部件上调用 setFixedSize() 。

\n\n

欲了解更多详细信息,请检查此...

\n\n

http://qt-project.org/faq/answer/how_can_i_trigger_the_parent_widget_to_resize_when_its_child_widget_is_resi

\n