【问题标题】:Menu Bar not Maximized When Main Window Maximized主窗口最大化时菜单栏未最大化
【发布时间】:2017-12-05 08:32:08
【问题描述】:

在 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"));
...

运行时,主窗口正确显示为最大化状态,但菜单栏缩短为:

一个奇怪的行为是,如果我通过单击窗口顶部的标准化按钮来标准化窗口,那么再次最大化确实会拉伸菜单栏。

我错过了什么?

【问题讨论】:

  • 如果在设置窗口状态之前调用show()会怎样?
  • @vahancho,它解决了这个问题。你能写一个答案并解释背后的逻辑吗?因为这对我来说似乎不合理。
  • 在 Ubuntu 16.04 上运行良好。可能是 Qt 错误。
  • @aatwo,Qt版本是多少?
  • 使用 Qt 5.6.3 在 Ubuntu 16.04 上测试

标签: qt qmainwindow


【解决方案1】:

您可以尝试在设置状态之前调用QMainWindow::show()函数,即:

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

我不确定我是否知道这种行为的确切原因,但我猜如果您尝试更改其几何而不显示它,Qt 会执行不正确的布局。它还可能取决于您使用的窗口管理器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-14
    • 2015-07-21
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2010-09-23
    • 2010-10-03
    • 1970-01-01
    相关资源
    最近更新 更多