Qt实现(多级)菜单 在Qt中通过QMenu和QAction就可以实现这些菜单,QMenu就是上图中我们看到的三个级联菜单,每个QMenu里面的小项目就是一个QAction,一个QAction由一个图标和一段文字描述组成。使用快捷键触发事件,需重写void keyPressEvent(QKeyEvent *event)方法。事例见下链接:https://blog.csdn.net/qq_16093323/article/details/83341880。
下面实现多级菜单的构建:
QMenu *menu = new QMenu();
menu->setMinimumWidth(150);//指定菜单的宽度为150
SystemMenu = new QMenu(this);
SystemMenu->setTitle(tr("帮助"));
QIcon icon(":/images/help1.png");
SystemMenu->setIcon(icon);
LogMgtMenu = new QMenu(this);
LogMgtMenu->setTitle(tr("日志管理"));
QIcon icon2(":/images/logMgn.png");
LogMgtMenu->setIcon(icon2);
SettingMenu = new QMenu(this);
SettingMenu->setTitle(tr("设置"));
QIcon icon4(":/images/setting.png");
SettingMenu->setIcon(icon4);
menu->addMenu(LogMgtMenu);
menu->addMenu(SettingMenu);
menu->addMenu(SystemMenu);
HandBookAction = new QAction(this);
HandBookAction->setText(tr("IPS 帮助"));
HandBookAction->setShortcut(Qt::Key_F1);
connect(HandBookAction,SIGNAL(triggered()),this,SIGNAL(HandBook()));
QIcon icon(":/images/help1.png");
HandBookAction->setIcon(icon);
AboutAction = new QAction(this);
AboutAction->setText(tr("关于"));
connect(AboutAction,SIGNAL(triggered()),this,SIGNAL(ShowAbout()));
QIcon icon1(":/images/about.png");
AboutAction->setIcon(icon1);
ExitAction = new QAction(this);
ExitAction->setText(tr("退出"));
ExitAction->setShortcut(Qt::CTRL|Qt::Key_Q);
connect(ExitAction, SIGNAL(triggered()), this, SIGNAL(Exit()));
QIcon icon2(":/images/exit.png");
ExitAction->setIcon(icon2);
SystemMenu->addAction(HandBookAction);
SystemMenu->addAction(AboutAction);
menu->addAction(ExitAction);