Qt QListWidget选中项鼠标右键和空白处鼠标右键

文章目录[隐藏]

Qt QListWidget 选中项鼠标右键和空白处鼠标右键

1. 前言

最近有个需求,是在 QListWidget 中选中项鼠标右键显示:修改和删除,空白处鼠标右键是:添加、修改和删除。查了会资料实现起来也不麻烦,具体如下:

2. 实现步骤

  1. 开启 QListWidget 鼠标右键,
  2. 绑定鼠标右键事件
  3. 将坐标点由原来的全局坐标改为局部组件坐标
  4. 判断当前点击的点是否在,item 项上

3. 具体代码

  1. 开启鼠标右键ui->iniListWidget->setContextMenuPolicy(Qt::CustomContextMenu); // 设置鼠标右键
  2. 设置槽函数void on_iniListWidget_customContextMenuRequested(const QPoint &pos);
  3. 实现槽函数

    void ParaConfig::on_iniListWidget_customContextMenuRequested(const QPoint &pos)
    {
    Q_UNUSED(pos);
    QMenu *menu = new QMenu(this);
    QAction *mAdd;
    QAction *mModify;
    QAction *mDel;
    
    mAdd = new QAction("添加", this);
    mModify = new QAction("修改", this);
    mDel = new QAction("删除", this);
    
    if(ui->iniListWidget->itemAt(mapFromGlobal(QCursor::pos())) == nullptr){
        menu->addAction(mAdd);
    }
    menu->addAction(mModify);
    menu->addAction(mDel);
    
    connect(mAdd, SIGNAL(triggered(bool)), this, SLOT(mAddActionSlot(bool)));
    connect(mModify, SIGNAL(triggered(bool)), this, SLOT(mModifyActionSlot(bool)));
    connect(mDel, SIGNAL(triggered(bool)), this, SLOT(mDelActionSlot(bool)));
    
    menu->exec(QCursor::pos());
    }

    4.鼠标右键具体实现,自己实现槽函数即可

posted @ 2019-08-08 09:45  不随。  阅读(98)  评论(0编辑  收藏  举报  来源