【发布时间】: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。没有帮助
标签: c++ qt menubar mainwindow