重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章为大家展示了PyQt5中怎么重写QComboBox鼠标点击事件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
从事雅安移动机房,服务器租用,云主机,网络空间,域名注册,CDN,网络代维等服务。1、建立工程创建界面什么的我就不写了,百度一大堆,重点就在重写QComboBox中的showPopup函数,我生成的界面文件为MainWidget.py。
2、我一直想大化QTDesigner的作用,我看到有一位网友是重写了再进行布局,我觉得这样很麻烦,所以我的做法是把布局都做好了,再转换成py文件之后,修改里面的代码,布局就不放出来,很渣,直接看代码。
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QComboBox from PyQt5.QtCore import pyqtSignal #导入这个模块才可以创建信号 class MyComboBox(QComboBox): popupAboutToBeShown = pyqtSignal() #创建一个信号 # def mousePressEvent(self, QMouseEvent):#这个是重写鼠标点击事件 # self.popupAboutToBeShown.emit() def showPopup(self): #重写showPopup函数 self.popupAboutToBeShown.emit() #发送信号
这样重写就完成了,我之前想的是重写鼠标点击事件,也就是上面代码中重写鼠标点击事件,但是经过实验,重写这个函数之后下拉列表就弹不出来了,后来研究了一下,在QComboBox中应该是鼠标点击事件触发了下拉函数showPopup,所以改为重写showPopup。
通过查看QT帮助文档可以看到
virtual void showPopup()
virtual关键字用于修改方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。
3、接下来就是修改建立界面的代码,只需要修改一行,原代码如下
self.ComBox = QtWidgets.QComboBox(self.splitter)
原代码是调用QComboBox类,也就是showPopup函数没有修改过,将其改为
self.ComBox = MyComboBox(self.splitter)
这是调用了重写后的类,其他的QComboBox控件不做修改,其功能就还是正常的。
最后绑定信号与槽
self.ComBox.popupAboutToBeShown.connect(Form.refresh)
refresh槽函数在新建的py文件中定义
上述内容就是PyQt5中怎么重写QComboBox鼠标点击事件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。