PyQt5重写QComboBox的鼠标点击事件方法
人气:0最近学PyQt5,想要做一个串口调试助手来练练手,之前用了正点原子的串口上位机,觉得点击ComboBox自动检测串口这个功能很棒,之前用QT5写串口调试助手的时候也想加入这个功能,但是一直没有成功,之后就不了了之,现在用了PyQt之后就想着一定要实现这个功能,百度了之后看了很多资料都没有找到直接的解决方法,但是大家都是在强调重写鼠标点击事件,然后自己慢慢实验终于写出来了。
我的开发环境是PyCharm+Python3.6+PyQt5.9.2
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的鼠标点击事件方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
您可能感兴趣的文章:
- python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
- python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
- python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
- python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
- python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
- python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
- python GUI库图形界面开发之PyQt5信号与槽基本操作
- python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
- PyQt5通信机制 信号与槽详解
- 浅谈pyqt5中信号与槽的认识
- PyQt5 closeEvent关闭事件退出提示框原理解析
- PyQt5响应回车事件的方法
- pyqt5 comboBox获得下标、文本和事件选中函数的方法
- PyQt5每天必学之事件与信号
- python3+PyQt5重新实现QT事件处理程序
- PyQt5每天必学之拖放事件
- python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
加载全部内容