1、每个QWidget继承的类都有customContextMenuRequested(), 这个信号可以在鼠标右击时候发射,为此信号编写槽函数可以创建和运行右键快捷菜单
[signal] void QWidget::customContextMenuRequested(const QPoint &pos)
2、代码示例
void MainWindow::on_listWidget_customContextMenuRequested(const QPoint &pos) { // 提前在设计师界面创建一个QListWidget,以及对应的QAction 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->actSelNone); menuList->addAction(ui->actSelInvs); menuList->exec(QCursor::pos()); //在鼠标光标位置显示右键快捷菜单 delete menuList; //手工创建的指针必须手工删除 }
// listWidget需要设定菜单的策略,才能在右击时候发出customContextMenuRequested()信号,可在构造函数设定 ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu);
3、效果