Qt MainWindow 不显示 MenuBar [关闭]

Posted

技术标签:

【中文标题】Qt MainWindow 不显示 MenuBar [关闭]【英文标题】:Qt MainWindow doesn't show MenuBar [closed] 【发布时间】:2017-11-19 18:38:33 【问题描述】:

在下面的代码中,我创建了 Qt Widget 的应用程序,基类 QMainWindow,并且没有 .ui 格式。 无法理解为什么 MenuBar 不显示,尝试了不同的变体,但没有一个有效。

这张图片展示了我得到了什么

.

系统 Ubuntu 16.04。 使用 QMake 3.0 版和 Qt 5.5.1 版

注意:在其他机器上同样的代码也能正常工作。

在mainwindow.h下面

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtGui>
#include <QWidget>

class MainWindow : public QMainWindow

    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
    QMenu *file;
;

#endif // MAINWINDOW_H

在 mainwindow.cpp 下方,注释行显示了我是如何尝试修复它的。

#include "mainwindow.h"
#include <QtGui>
#include <QtWidgets>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)

    //QVBoxLayout *vbl = new QVBoxLayout;
    QMenu *file = new QMenu("&File"); //menuBar()->addMenu("&File");//new QMenu("&File");
    file->addAction("&Quit",qApp,SLOT(quit()),Qt::CTRL+Qt::Key_Q);


    QMenuBar *mb = menuBar();

    mb->addMenu(file);
    mb->show();
    setMenuBar(mb);

    //vbl->setMenuBar(mb);
    //setLayout(vbl);

    resize(400,400);


MainWindow::~MainWindow()



【问题讨论】:

我不明白您为什么要创建 QVBoxLayout,但即使代码有效并且我观察菜单,您也必须提供 Minimal, Complete, and Verifiable example,即重现您的错误的代码,并且正如我所看到的,不是因为我使用了您的代码,而且它显然可以进行一些小的修改,将 Widget 更改为 QWidget。 问题是相同的代码在其他机器上运行,只有在我的电脑上显示错误的结果。 然后重新安装Qt,并执行回来,非常特殊的答案将无法在SO中回答。 完成,已重新安装最新版本的 Qt 5.9.2。没有帮助 【参考方案1】:

经过一些调查和重新安装所有组件后,我解决了这个简单的问题。需要将“显示窗口的菜单”的“系统设置 -> 外观 -> 行为”参数从“在菜单栏中”更改为“在窗口的标题栏中”。感谢所有试图提供帮助的人。

【讨论】:

以上是关于Qt MainWindow 不显示 MenuBar [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Qt:删除MainWindow后QMenu似乎没有被删除

Qt__主窗口菜单和工具条(QMainWindow,QMenu,QToolBar)

PyQtGraph 图在 Qt MainWindow 上显示不正确

QtCreator 4.1.0 不显示 MainWindow 表单编辑器的 webengineview(QT 5.7)

PySide MainWindow 不创建菜单栏

qt中的ui_mainwindow.h文件是自动创建的吗,还是要手动输入啊,我看别人的源码都不显示这个头文件