Qt创建鼠标右键快捷菜单

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、效果

 

posted @ 2020-10-01 20:55  补码  阅读(675)  评论(0编辑  收藏  举报