【发布时间】:2019-07-23 21:57:18
【问题描述】:
我正在尝试构建一个应用程序,在第一个窗口获得一些用户输入后,会弹出另一个窗口并显示一些结果。但是,即使菜单栏在第一个窗口中可见,菜单栏也不会出现在第二个窗口中。这两个窗口是不同类的对象,但两个类都继承自QMainWindow。
我尝试过使用 menuBar() 函数,该函数返回一个指向菜单栏的指针以添加菜单(这适用于第一个窗口)。我还尝试创建一个新的菜单栏对象,但也没有用。
//MapWindow.h
class MapWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MapWindow(QWidget *parent = nullptr);
~MapWindow();
private:
QAction *vehicleAct;
QAction *missionAct;
QAction *backAct;
QMenu *toolMenu;
};
//MapWindow.cpp
MapWindow::MapWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MapWindow)
{
ui->setupUi(this);
setWindowState(Qt::WindowMaximized);
vehicleAct = new QAction("Vehicle Selection");
vehicleAct->setShortcut(Qt::CTRL + Qt::Key_V);
missionAct = new QAction("Mission Selection");
missionAct->setShortcut(Qt::CTRL + Qt::Key_M);
backAct = new QAction("Back");
backAct->setShortcut(Qt::CTRL + Qt::Key_B);
toolMenu = menuBar()->addMenu("Tools");
toolMenu->addAction(vehicleAct);
toolMenu->addAction(missionAct);
toolMenu->addAction(backAct);
}
MapWindow::~MapWindow() {
delete ui;
}
当我在同样继承自 QMainWindow 的 WelcomeWindow 类中使用相同的代码时,它可以完美运行。但是,它甚至没有在第二个窗口中显示菜单栏。
【问题讨论】:
-
我建议您发布一个最小可重现示例,以便您可以在这里获得一些帮助。让它只是一个新项目,这样你就可以确定它可以编译。真的很值得。
-
你已经创建了一个 QMenu ,它会显示在一个窗口中,改变你的代码架构,
-
@Aleph0 我已尝试在新项目中重现问题,但效果很好,我找不到重现问题的方法。
-
@VahagnAvagyan 以上不是全部代码。我认为只发布相关的代码会使其更具可读性,因为这只是大项目的一小部分。
标签: qt menubar qmainwindow