Qt WindowMaximize 不改变几何(C++)

Posted

技术标签:

【中文标题】Qt WindowMaximize 不改变几何(C++)【英文标题】:Qt WindowMaximize not changing geometry (C++) 【发布时间】:2011-07-30 17:56:43 【问题描述】:

所以我将 Web 浏览器作为我的第一个 Qt 项目(惊喜!),我想知道为什么调用 setWindowState(Qt::WindowMaximized) 不会改变窗口几何形状。我有这个代码:

来自 mainwindow.h:

namespace Ui 
    class MainWindow;


class MainWindow : public QMainWindow

    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
private:
    Ui::MainWindow *ui;
;

来自 mainwindow.cpp:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent), ui(new Ui::MainWindow)

    ui->setupUi(this);
    // this->geometry() is the same here...
    setWindowState(Qt::WindowMaximized);
    ui->webView->setGeometry(0, 60, geometry().width(), geometry().height()-60);
    // ...as it is here.

如您所知,我正在尝试以最大化窗口和最大化 QWebView 来启动应用程序。基本上,每当调整主窗口的大小时,我也想用更新的高度和宽度调用ui->webView->setGeometry。但是MainWindow::geometry 似乎没有更新。我做错了什么?

【问题讨论】:

【参考方案1】:

我必须仔细检查,但在您的主窗口收到显示事件之前,您的几何图形可能无法正确更新。

但是,我建议您将 QWebView 放在布局中,而不是在每次主窗口更改大小时手动调整其大小。

【讨论】:

好的,在这种情况下,网格布局最有意义吗? 你应该可以使用 QBoxLayout 或 QStackedLayout。可以使用父窗口小部件的 setContentsMargins() 函数设置 60 像素的边距。

以上是关于Qt WindowMaximize 不改变几何(C++)的主要内容,如果未能解决你的问题,请参考以下文章

不使用线程的 C++/Qt 线程错误

Qt QScrollBar 改变背景颜色

QT QML改变状态c ++

Qt怎么改变QGroupBox控件的边框颜色啊?请高手指点

Qt/PyQt:QGraphicsItem vs. QGraphicsWidget 几何、位置、鼠标交互

QT 初阶 1.3 节 控件的几何排列