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++)的主要内容,如果未能解决你的问题,请参考以下文章