Qt右键创建菜单(包含二级菜单)

群里又有人问这种简单问题,还是写出来记录,以后就扔链接了。

准备工作:

熟悉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 actionList;
    actionList<addActions(actionList);

    //子菜单
    QMenu *childMenu = new QMenu();
    //子菜单的 子项
    QAction *delfile = new QAction(childMenu);
    delfile->setText("删除");
    QAction *addfile = new QAction(childMenu);
    addfile->setText("添加");
    QList childActionList;
    childActionList<addActions(childActionList);
    //设置子菜单 归属opion
    option->setMenu(childMenu);
    //主菜单添加子菜单
    MainMenu->addMenu(childMenu);
    // 移动到当前鼠标所在未知
    MainMenu->exec(QCursor::pos());
}

 效果图如下:

Qt右键创建菜单(包含二级菜单)_第1张图片

 至于每个按钮的事件,自己写信号槽即可!

你可能感兴趣的:(Qt学习)