快捷菜单又称为上下文菜单,通常在用鼠标右击的时候弹出。创建快捷菜单的方法和创建菜单栏菜单类似。
效果图:
一、将MainWindow类对象的ContextMenuPolicy属性设置为customContextMenu。
打开mainWindow.ui,在属性视图上找到ContextMenuPolicy,并选择CustomContextMenu。
二、创建菜单栏对象
三、在mainwindow.ui界面鼠标右键选择”转到槽“,接着点击信号对应的CustomContextMenuRequested(QPoint),单击OK。然后编辑槽函数如下
#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//一级菜单menu1 = new QMenu(QString::fromUtf8("编辑"));menu1->addAction(QString::fromUtf8("退出"));menu1->addAction(QString::fromUtf8("选项"));menu1->addAction(QString::fromUtf8("信息"));//二级菜单1menu2 = new QMenu(QString::fromUtf8("保存为"));menu2->addAction(QString::fromUtf8("保存为图片"));menu2->addAction(QString::fromUtf8("保存为视频"));menu2->addAction(QString::fromUtf8("保存为文本文件"));//二级菜单2menu3 = new QMenu(QString::fromUtf8("工具栏"));menu3->addAction(QString::fromUtf8("缩小"));menu3->addAction(QString::fromUtf8("放大"));menu3->addAction(QString::fromUtf8("插入"));menu3->addAction(QString::fromUtf8("切换"));//将二级菜单插入一级菜单栏中menu1->addMenu(menu2);menu1->addMenu(menu3);//初始化为当前页面菜单栏this->menuBar()->addMenu(menu1);
}MainWindow::~MainWindow()
{delete ui;
}
//鼠标右键点击显示菜单
void MainWindow::on_MainWindow_customContextMenuRequested(const QPoint &pos)
{menu1->exec(mapToGlobal(pos)); // 在鼠标点击位置显示菜单
}