菜单栏未显示在第二个窗口上
Posted
技术标签:
【中文标题】菜单栏未显示在第二个窗口上【英文标题】:Menubar is not showing on the second window 【发布时间】: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 以上不是全部代码。我认为只发布相关的代码会使其更具可读性,因为这只是大项目的一小部分。 【参考方案1】:我设法找到了问题所在。我的一个小部件(QScrollArea)位于屏幕的左上角,由于某种原因阻止了整个菜单栏的显示。将 QScrollArea 向下移动一点解决了这个问题。
【讨论】:
以上是关于菜单栏未显示在第二个窗口上的主要内容,如果未能解决你的问题,请参考以下文章