pyqt5的QListWidget中设置右键菜单
QListWidget 是继承 QWidget 的, 所以 QListWidget 是有右键菜单的,
从文档上可以找到 QWidget 上有以下两个与右键菜单有关的函数:
- Qt.ContextMenuPolicy contextMenuPolicy (self)
- setContextMenuPolicy (self, Qt.ContextMenuPolicy policy)
Qt.ContextMenuPolicy 是一个枚举类型:
Constant | Value | Description |
---|---|---|
Qt.NoContextMenu | 0 | the widget does not feature a context menu, context menu handling is deferred to the widget's parent. |
Qt.PreventContextMenu | 4 | the widget does not feature a context menu, and in contrast to NoContextMenu, the handling is not deferred to the widget's parent. This means that all right mouse button events are guaranteed to be delivered to the widget itself through mousePressEvent(), and mouseReleaseEvent(). |
Qt.DefaultContextMenu | 1 | the widget's QWidget.contextMenuEvent() handler is called. |
Qt.ActionsContextMenu | 2 | the widget displays its QWidget.actions() as context menu. |
Qt.CustomContextMenu | 3 | the widget emits the QWidget.customContextMenuRequested() signal. |
现在主要要说的是利用 Qt.CustomContextMenu 来创建右键菜单.
listWidget.setContextMenuPolicy(3) 设置菜单
listWidget.customContextMenuRequested[QtCore.QPoint].connect() 绑定方法
通过上面的Qpoint 获取列表中的 选定的选项 item :
item = listWidget.itemAt(x,y)
根据point的坐标移除 列表选项中的item :
listwidget.removeItemWidget(listwidget.takeItem(listwidget.row(item)))
QWidget 和它的子类 contextMenuPolicy 的默认值是 Qt.DefaultContextMenu 的,
所以我们需要通过 setContextMenuPolicy(QtCore.Qt.CustomContextMenu) 重新来设置他的值
(在Qt设计师中, 可以直接修改 contextMenuPolicy 的值为 CustomContextMenu 并且写入到UI文件中,
所以用Qt设计师可以不用 setContextMenuPolicy 方法来设置)
CustomContextMenu 它所发出的是一个 customContextMenuRequested 信号 (signal) 如下:
- void customContextMenuRequested (const QPoint&)
这个信号是QWidget唯一与右键菜单有关的信号(也是自有的唯一信号), 同时也是很容易被忽略的信号(signal)
*注: 文档中QWidget方法和属性巨量多, 以致我都看不到底部居然还有"一个"信号
既然有信号, 那么我们就可以轻松自定义我们想要的右键菜单了.
了解到这些之后, 我们就着手编写槽(slot)了.

def myListWidgetContext(self, point):
popMenu = QtGui.QMenu()
popMenu.addAction(QtGui.QAction(u'添加', self))
popMenu.addAction(QtGui.QAction(u'删除', self))
popMenu.addAction(QtGui.QAction(u'修改', self)) popMenu.exec_(QtGui.QCursor.pos())

接着就是连接槽
self.myListWidget.customContextMenuRequested[QtCore.QPoint].connect(self.myListWidgetContext)
pyqt5的QListWidget中设置右键菜单的更多相关文章
- Pyqt在QListWidget中添加右键菜单
Pyqt 的资料奇少, 攻破难点之后, 就在这里记一下笔记. QListWidget 是继承 QWidget 的, 所以 QListWidget 是有右键菜单的, 从文档上可以找到 QWidget 上 ...
- BHO多线程中实现右键菜单
在BHO中实现右键菜单网上相关文章很多,可以通过实现IDocHostUIHandler接口的ShowContextMenu.截获HTMLDocumentEvents2的OnContextMenu消息等 ...
- WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法
原文:WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法 问题描述 今天发现如果我想在一个TextBlock弄一个右键菜单,并且使用Command绑定,结果发 ...
- wpf datagrid设置右键菜单打开时选中项的背景色
原文:wpf datagrid设置右键菜单打开时选中项的背景色 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/huangli321456/artic ...
- 仅在TabControl中的Tab中添加右键菜单
若想实现仅在TabControl中的Tab中添加右键菜单,可在XAML中通过使用样式得到: <TabControl> <TabControl.ItemContainerStyle&g ...
- IntelliJ IDEA 中设置左菜单字体, 编辑器字体和控制台的字体
IntelliJ IDEA 中设置左菜单字体大小 File-Settings,然后选择appearance,下图右侧红色边框中的内容即设置菜单的字体和大小 IntelliJ IDEA 中设置当前编 ...
- 怎样在Windows资源管理器中添加右键菜单以及修改右键菜单顺序
有时,我们需要在Windows资源管理器的右键菜单中添加一些项,以方便使用某些功能或程序. 比如我的电脑上有一个免安装版的Notepad++,我想在所有文件的右键菜单中添加一项用Notepad++打开 ...
- Maven问题总结:Eclipse中项目右键菜单中点击Maven->Update Projects时JDK被重置
Eclipse中在项目右键菜单点击->Maven->Update Projects时,JDK总是切回 1.5 如果没有在Maven中配置过JDK版本,只是在Eclipse中项目的Prope ...
- DevExpress GridView加入DevExpress中的右键菜单PopuMenu
1. 添加一个Barmanager控件 2. 加入popumenu控件,点击该控件右上角的黑色三角号,编辑选项,点击编辑的选项,选择事件,编辑事件. 3. 在使用该右键菜单的控件添加MouseUp事件 ...
随机推荐
- three.js之创建坐标系网格
<!DOCTYPE html> <html> <head> <meta charset=utf-8> <title>My first thr ...
- DA_06_高级文本处理命令
Linux中没有盘符这个概念,只有一个根目录“/”,所有文件都在它下面:点击计算机,下面存放的都是根目录下的东西: 2.6 文本文件编辑命令 1.cat 命令用于查看纯文本文件(内容较少的:一次性全部 ...
- ad 拼板
随着整个电子产业的不断发展,电子行业的很多产品都已经有完善的上下游配套企业.从一个成熟产品的方案设计,外观设计,加工制造,装配测试,包装,批发商渠道等等,这样的一条产业链在特定的环境就这样自然地生成. ...
- windows漏洞MS03_026
话不多说,直接进入正题 第一步查看是否能ping通,第二步就是扫描端口,开放了端口才能进行攻击 linux进入msfconsole,搜索03_026 search 03_026 等待一会,返回漏洞的全 ...
- shell脚本基础和grep文本处理工具企业应用3
文本处理工具: linux上文本处理三剑客 grep,egrep,fgrep:文本过滤工具(模式:pattern)工具 grep:默认支持的是基本正则表达式: ...
- phpMyAdmin出现Fatal error: Maximum execution time of 300 seconds
在mysql用phpMyAdmin导入大数据的时候出现:Fatal error: Maximum execution time of 300 seconds exceeded in D:/查了很多文章 ...
- HNOI 世界树 虚树
//virtual tree /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #defin ...
- USRPX310 在GNU Radio上更改通道A或B
UHD:USRP sink和USRP source默认是A通道发射接收.或设置 Mb0:Subdev Spec: A:0 更改为B通道收发:设置 Mb0:Subdev Spec: B:0
- top命令参数详解
简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...
- Module parse failed: Export 'instance' is not defined (35:19)
Module parse failed: Export 'instance' is not defined (35:19) 使用npm出现的这错误,用yarn就可以了 这种情况rm node_modu ...