2013-05-14 4 views
2

Я пытаюсь создать QMainWindow для инкапсуляции QGraphicsView, который я вставляю в него. Я хочу, чтобы начать максимально, поэтому я делаю это:QMainWindow :: showMaximized() не обновляет размер

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

Который говорит, что мой развернутое окно является 200x100, что, очевидно, неверно.

Я пропустил какую-то функцию обновления? Я не понимаю, почему он не обновит размер. Я также попытался использовать showMaximized() с тем же результатом.

EDIT

Моя конечная цель заключается в использовании QMainWindow в качестве контейнера для QGraphicsView, содержащего QGraphicsScene. Помимо всего этого, я хочу иметь QWebView с шириной 50% и высотой 100%, сосредоточенной на всем.

Итак, мне нужна ширина и высота, чтобы получить правильные координаты и размеры.

+1

Я предполагаю, что это часть вас «главная» или аналогичная, т. Е. До того, как цикл событий даже начнется. Вам нужно будет подождать, пока события будут обработаны для размера окна, которое нужно настроить - я думаю, что 'show' просто отправляет событие. – Mat

+0

Да, это правильно в верхней части 'main'. Есть ли рекомендуемый способ разрешить все, прежде чем я смогу увидеть обновленный размер? –

+0

Зависит от того, что вам нужно для этого размера, я думаю. Зачем вам нужен размер? – Mat

ответ

1

Ну, эффект setWindowState() не является непосредственным, он запускается асинхронно. Когда состояние окна изменяется, виджет получает changeEvent(), поэтому вы должны переопределить это или resizeEvent(), чтобы получить ширину() и height() после максимизации.

Смежные вопросы