1、背景知识
每个从 QWidget 继承的类都有信号 customContextMenuRequested(),这个信号在鼠标右击时发射,为此信号编写槽函数,可以创建和运行右键快捷菜单。
2、案例:为 QListWidget 创建右键快捷菜单
(1)创建槽函数
右击 QListWidget 组件,为信号 customContextMenuRequested(const QPoint &pos) 创建槽函数,槽函数如下:
void MyMainWindow::on_listWidget_customContextMenuRequested(const QPoint &pos)
{
Q_UNUSED(pos);
QMenu *menuList = new QMenu(this);
//添加 Actions 创建菜单项
menuList->addAction(ui->actListIni);
menuList->addAction(ui->actListClear);
menuList->addAction(ui->actListInsert);
menuList->addAction(ui->actListAppend);
menuList->addAction(ui->actListDelete);
menuList->addSeparator();
menuList->addAction(ui->actSelAll);
menuList->addAction(ui->actSelNome);
menuList->addAction(ui->actSelInvs);
//在鼠标光标位置显示右键快捷菜单
// menuList->exec(pos);
menuList->exec(QCursor::pos());
//将不用对象从内存删除
delete menuList;
}
(2)为 QListWidget 添加右键菜单策略
MyMainWindow::MyMainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MyMainWindow)
{
ui->setupUi(this);
......
//添加右键菜单策略
ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu);
}
注意:若不设置该策略,将无法弹出菜单!!!