Строка меню не развернута, когда главное окно развернуто

В Qt 5.5.1 (Linux) я показываю главное окно в развернутом состоянии как:

QApplication a(argc, argv);
MainWindow w;
w.setWindowState(Qt::WindowMaximized);
w.show();
return a.exec();

В конструкторе главного окна я вызываю CreateMenuBar, который просто создает какое-то меню:

fileMenu = menuBar()->addMenu(tr("&File"));
projectMenu = menuBar()->addMenu(tr("&Project"));
...

При запуске главное окно правильно отображается в развернутом состоянии, но строка меню укорачивается следующим образом:

введите здесь описание изображения

Одно странное поведение заключается в том, что если я нормализовал окно, нажав кнопку нормализации в верхней части окна, то снова максимизация растягивает строку меню, как и должно быть.

Что мне не хватает?


person Fredrick Gauss    schedule 05.12.2017    source источник
comment
Что, если вы вызовете show() перед установкой состояния окна?   -  person vahancho    schedule 05.12.2017
comment
@vahancho, это решает проблему. Можете ли вы написать ответ с объяснением логики? Потому что мне это казалось не рациональным.   -  person Fredrick Gauss    schedule 05.12.2017
comment
На Ubuntu 16.04 работает нормально. Может быть ошибка Qt.   -  person aatwo    schedule 05.12.2017
comment
@aatwo, какая версия Qt?   -  person Fredrick Gauss    schedule 05.12.2017
comment
Протестировано на Ubuntu 16.04 с использованием Qt 5.6.3.   -  person aatwo    schedule 05.12.2017


Ответы (1)


Вы можете попробовать вызвать функцию QMainWindow::show() перед установкой ее состояния, т.е.:

[..]
w.show();
w.setWindowState(Qt::WindowMaximized);

Я не уверен, что знаю точную причину такого поведения, но я предполагаю, что Qt выполняет неправильное размещение, если вы пытаетесь изменить его геометрию, не показывая этого. Это также может зависеть от используемого оконного менеджера.

person vahancho    schedule 05.12.2017