Main Window 最大化时菜单栏未最大化
Menu Bar not Maximized When Main Window Maximized
在 Qt 5.5.1 (Linux) 中,我将 main window 显示为最大化状态:
QApplication a(argc, argv);
MainWindow w;
w.setWindowState(Qt::WindowMaximized);
w.show();
return a.exec();
在主 window 构造函数中,我调用了 CreateMenuBar
,它只是创建了一些菜单:
fileMenu = menuBar()->addMenu(tr("&File"));
projectMenu = menuBar()->addMenu(tr("&Project"));
...
当 运行 时,Main Window 正确显示为最大化状态,但菜单栏缩短为:
一个奇怪的行为是,如果我通过单击 window 顶部的标准化按钮来标准化 window,然后再次最大化确实会按应有的方式拉伸菜单栏。
我错过了什么?
您可以尝试在设置其状态之前调用 QMainWindow::show()
函数,即:
[..]
w.show();
w.setWindowState(Qt::WindowMaximized);
我不确定我是否知道这种行为的确切原因,但我猜想如果您尝试在不显示它的情况下更改其几何形状,Qt 会执行错误的布局。这也可能取决于您使用的 window 管理器。
在 Qt 5.5.1 (Linux) 中,我将 main window 显示为最大化状态:
QApplication a(argc, argv);
MainWindow w;
w.setWindowState(Qt::WindowMaximized);
w.show();
return a.exec();
在主 window 构造函数中,我调用了 CreateMenuBar
,它只是创建了一些菜单:
fileMenu = menuBar()->addMenu(tr("&File"));
projectMenu = menuBar()->addMenu(tr("&Project"));
...
当 运行 时,Main Window 正确显示为最大化状态,但菜单栏缩短为:
一个奇怪的行为是,如果我通过单击 window 顶部的标准化按钮来标准化 window,然后再次最大化确实会按应有的方式拉伸菜单栏。
我错过了什么?
您可以尝试在设置其状态之前调用 QMainWindow::show()
函数,即:
[..]
w.show();
w.setWindowState(Qt::WindowMaximized);
我不确定我是否知道这种行为的确切原因,但我猜想如果您尝试在不显示它的情况下更改其几何形状,Qt 会执行错误的布局。这也可能取决于您使用的 window 管理器。