首页 > 解决方案 > 为什么 adjustSize 不会在 Qt 中调整 MainWindow 的大小?

问题描述

我有一个简单的应用程序。在 MainWindow 的构造函数中,我有:

    _someWidget = new someWidgetClass(this);
    _someWidget ->setFixedSize(700,700);
    _someWidget ->move(50,50);
   
    wid = new QWidget(this);
    wid->move(800,800);
    wid->setFixedSize(100,100);

    centralWidget()->adjustSize();
    adjustSize();

我想像这样调整 MainWindow 的大小,他的右下角应该是 的右下角wid,所以我想将 MainWindow 的大小调整为他的内容。但adjustSize不起作用。

我尝试添加sizeHint()方法someWidgetClass并返回他的大小,但这也无济于事。

标签: c++qtresize

解决方案


您应该为 设置一种布局centralWidget,例如,我使用QGridLayout. 然后在该布局中添加您的小部件:

 auto  _someWidget = new QWidget(this);
_someWidget->move(50, 50);
_someWidget->setFixedSize(700, 700);

centralWidget()->layout()->addWidget(_someWidget);

auto  wid = new QWidget(this);
wid->move(800, 800);
wid->setFixedSize(100, 100);
centralWidget()->layout()->addWidget(wid);


centralWidget()->adjustSize();
adjustSize();

关于adjustSize功能:

调整小部件的大小以适合其内容。如果 sizeHint() 有效,则此函数使用 sizeHint(),即尺寸提示的宽度和高度为 >= 0. 否则,它将大小设置为覆盖所有子小部件的子矩形(所有子小部件矩形的联合)。对于windows,屏幕尺寸也被考虑在内。如果 sizeHint() 小于 (200, 100) 并且尺寸策略正在扩展,则窗口将至少为 (200, 100)。窗口的最大尺寸是屏幕宽度和高度的 2/3。


推荐阅读