Qt的listWidget如何添加右键菜单
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt的listWidget如何添加右键菜单相关的知识,希望对你有一定的参考价值。
如题 我怎么在listwidget的item上面点击鼠标右键就会出现我自定义的菜单,在别的地方点击不出现菜单?求大神指点,不要回答自己百度,因为我试过了,没成功,谢谢。
参考技术A 不解释,自己看。// myWidget is any QWidget-derived class
myWidget->setContextMenuPolicy(Qt::CustomContextMenu);
connect(myWidget, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(ShowContextMenu(const QPoint&)));
void MyClass::ShowContextMenu(const QPoint& pos) // this is a slot
// for most widgets
QPoint globalPos = myWidget->mapToGlobal(pos);
// for QAbstractScrollArea and derived classes you would use:
// QPoint globalPos = myWidget->viewport()->mapToGlobal(pos);
QMenu myMenu;
myMenu.addAction("Menu Item 1");
// ...
QAction* selectedItem = myMenu.exec(globalPos);
if (selectedItem)
// something was chosen, do stuff
else
// nothing was chosen
本回答被提问者采纳
pyqt5的QListWidget中设置右键菜单
两种思路:一. 重写event事件方法。
容易出现冲突事件...
二. 利用Widget的添加菜单方式
listWidget.setContextMenuPolicy(3)
设置菜单listWidget.customContextMenuRequested[QtCore.QPoint].connect()
绑定方法 此时的右键菜单是整个列表任意地方都会弹出。
传递的信号参数是鼠标点击的位置 QPoint。
绑定的函数往往需要其他参数,有两种方式:
1> 匿名函数
connect(lambda: function(args1,args2))
2> 通过functools工具中的partial 函数
connect(partial(function,arg1,arg2))
推荐第二种,因为会附带默认参数一起传递。
*
——
——
通过上面的Qpoint 获取列表中的 选定的选项 item :
item = listWidget.itemAt(x,y) ,根据point的坐标
移除 列表选项中的item :listwidget.removeItemWidget(listwidget.takeItem(listwidget.row(item)))
以上是关于Qt的listWidget如何添加右键菜单的主要内容,如果未能解决你的问题,请参考以下文章
我的Qt学习笔记 4 如何在 QWidget 窗口上弹出右键菜单