Qt QListWidget选中项鼠标右键和空白处鼠标右键
Qt QListWidget 选中项鼠标右键和空白处鼠标右键
1. 前言
最近有个需求,是在 QListWidget 中选中项鼠标右键显示:修改和删除,空白处鼠标右键是:添加、修改和删除。查了会资料实现起来也不麻烦,具体如下:
2. 实现步骤
- 开启 QListWidget 鼠标右键,
- 绑定鼠标右键事件
- 将坐标点由原来的全局坐标改为局部组件坐标
- 判断当前点击的点是否在,item 项上
3. 具体代码
- 开启鼠标右键
ui->iniListWidget->setContextMenuPolicy(Qt::CustomContextMenu); // 设置鼠标右键
- 设置槽函数
void on_iniListWidget_customContextMenuRequested(const QPoint &pos);
-
实现槽函数
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.鼠标右键具体实现,自己实现槽函数即可