四、为 QListWidget 创建右键快捷菜单

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);
}

注意:若不设置该策略,将无法弹出菜单!!!

发布了444 篇原创文章 · 获赞 113 · 访问量 40万+

猜你喜欢

转载自blog.csdn.net/panchang199266/article/details/103793779