2013-05-14 58 views
2

我试图创建一个QMainWindow来封装我正在放入的QGraphicsView。我希望它开始最大化,所以我这样做:QMainWindow :: showMaximized()不更新大小

QMainWindow *mainWindow = new QMainWindow(); 
mainWindow->setWindowState(Qt::WindowMaximized); 
mainWindow->show(); 
qDebug() << mainWindow->size(); 

这说我最大化的窗口是200x100,这显然是不正确的。

我是否缺少某种更新功能?我不明白为什么它不会更新大小。我也尝试使用showMaximized()获得相同的结果。

EDIT

我的最终目标是要使用的QMainWindow作为用于容纳QGraphicsScene一个的QGraphicsView的容器。最重要的是,我希望有一个宽度为50%,高度为100%的QWebView,集中在所有内容上。

所以,我需要的宽度和高度,以获得正确的所有坐标和尺寸。

+1

我猜这是你的一部分'main'或类似的东西,即事件循环甚至开始之前。你需要等待窗口大小的事件才能被调整 - 我认为'show'只是发布了一个事件。 – Mat

+0

是的,它正好位于'main'的顶部。在我看到更新后的尺寸之前,是否有建议的方式让所有事情都能解决? –

+0

取决于你需要的尺寸,我想。你为什么需要这个尺寸? – Mat

回答

1

那么,setWindowState()的影响不是立即执行,它会异步执行。当窗口状态改变时,窗口部件会接收到一个changeEvent(),所以你应该重新实现这个或resizeEvent()来获取最大化发生后的width()和height()。

相关问题