群里又有人问这种简单问题,还是写出来记录,以后就扔链接了。
准备工作:
熟悉QMenu QAction QList
创建菜单的过程
1. 重写
virtual void
contextMenuEvent(QContextMenuEvent *event)函数
void Widget::contextMenuEvent(QContextMenuEvent *){
// 主菜单
QMenu *MainMenu = new QMenu(this);
//主菜单的 子项
QAction *option = new QAction(MainMenu);
option->setText("选项");
QAction *about = new QAction(MainMenu);
about->setText("关于");
QList<QAction*> actionList;
actionList<<option\
<<about;
//添加子项到主菜单
MainMenu->addActions(actionList);
//子菜单
QMenu *childMenu = new QMenu();
//子菜单的 子项
QAction *delfile = new QAction(childMenu);
delfile->setText("删除");
QAction *addfile = new QAction(childMenu);
addfile->setText("添加");
QList<QAction *> childActionList;
childActionList<<delfile\
<<addfile;
childMenu->addActions(childActionList);
//设置子菜单 归属opion
option->setMenu(childMenu);
//主菜单添加子菜单
MainMenu->addMenu(childMenu);
// 移动到当前鼠标所在未知
MainMenu->exec(QCursor::pos());
}
效果图如下:
至于每个按钮的事件,自己写信号槽即可!