作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 C++ 和 Qt 的新手,在开始学习时遇到了一些麻烦。我真的很感激一些帮助。我想添加一个对所有应用程序屏幕都保持不变的菜单栏。如果我将它添加到主函数,菜单栏显示正常,但我知道这不应该在我的主函数中:
#include <QtGui/QApplication>
#include "mainwindow.h"
#include "form.h"
#include "menu.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
QMenuBar *menu = new QMenuBar(0);
QMenu* menu1 = new QMenu("MENU1");
menu1->addMenu(new QMenu("menu1_SubMenu"));
QMenu* menu2 = new QMenu("MENU2");
menu2->addMenu(new QMenu("menu2_SubMenu"));
menu->addMenu(menu1);
menu->addMenu(menu2);
w.show();
return a.exec();
}
如果我为菜单栏创建一个类,它不会出现。唯一的区别是我将菜单代码放在菜单类的构造函数中,然后从 main.cpp 实例化菜单类:
主要.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
#include "form.h"
#include "menu.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
Menu m;
m.show();
w.show();
return a.exec();
}
菜单.h
#ifndef MENU_H
#define MENU_H
#include <QMenuBar>
class Menu : public QMenuBar
{
Q_OBJECT
public:
Menu(QMenuBar *parent = 0);
};
#endif // MENU_H
菜单.cpp
#include "menu.h"
Menu::Menu(QMenuBar *parent)
{
QMenuBar *menu = new QMenuBar(0);
QMenu* menu1 = new QMenu("MENU1");
menu1->addMenu(new QMenu("menu1_SubMenu"));
QMenu* menu2 = new QMenu("MENU2");
menu2->addMenu(new QMenu("menu2_SubMenu"));
menu->addMenu(menu1);
menu->addMenu(menu2);
}
我做错了什么?
最佳答案
您的Menu
类是从QMenuBar
派生的,但是除了show() 之外您没有调用它的任何方法。所有 addMenu()
调用都是针对构造函数中的局部变量 menu
进行的,这些变量被分配,然后被遗忘。您应该改为在 this
上调用它们:
#include "menu.h"
Menu::Menu(QMenuBar *parent)
{
QMenu* menu1 = new QMenu("MENU1");
menu1->addMenu(new QMenu("menu1_SubMenu"));
QMenu* menu2 = new QMenu("MENU2");
menu2->addMenu(new QMenu("menu2_SubMenu"));
this->addMenu(menu1);
this->addMenu(menu2);
}
关于c++ - Qt 中的全局菜单与 QtMenuBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8671290/
这是在 Menu 类中。问题是 addAction。这有效,但没有连接到插槽: QMenu* menu2 = new QMenu("Test"); menu2->addAction("Test");
我是 C++ 和 Qt 的新手,在开始学习时遇到了一些麻烦。我真的很感激一些帮助。我想添加一个对所有应用程序屏幕都保持不变的菜单栏。如果我将它添加到主函数,菜单栏显示正常,但我知道这不应该在我的主函数
我是一名优秀的程序员,十分优秀!