欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PyQt5重寫QComboBox的鼠標(biāo)點(diǎn)擊事件方法

 更新時(shí)間:2019年06月25日 11:04:34   作者:pzx_hkq  
今天小編就為大家分享一篇PyQt5重寫QComboBox的鼠標(biāo)點(diǎn)擊事件方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

最近學(xué)PyQt5,想要做一個(gè)串口調(diào)試助手來(lái)練練手,之前用了正點(diǎn)原子的串口上位機(jī),覺得點(diǎn)擊ComboBox自動(dòng)檢測(cè)串口這個(gè)功能很棒,之前用QT5寫串口調(diào)試助手的時(shí)候也想加入這個(gè)功能,但是一直沒有成功,之后就不了了之,現(xiàn)在用了PyQt之后就想著一定要實(shí)現(xiàn)這個(gè)功能,百度了之后看了很多資料都沒有找到直接的解決方法,但是大家都是在強(qiáng)調(diào)重寫鼠標(biāo)點(diǎn)擊事件,然后自己慢慢實(shí)驗(yàn)終于寫出來(lái)了。

我的開發(fā)環(huán)境是PyCharm+Python3.6+PyQt5.9.2

1、建立工程創(chuàng)建界面什么的我就不寫了,百度一大堆,重點(diǎn)就在重寫QComboBox中的showPopup函數(shù),我生成的界面文件為MainWidget.py。

2、我一直想最大化QTDesigner的作用,我看到有一位網(wǎng)友是重寫了再進(jìn)行布局,我覺得這樣很麻煩,所以我的做法是把布局都做好了,再轉(zhuǎn)換成py文件之后,修改里面的代碼,布局就不放出來(lái),很渣,直接看代碼。

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QComboBox
from PyQt5.QtCore import pyqtSignal  #導(dǎo)入這個(gè)模塊才可以創(chuàng)建信號(hào)

class MyComboBox(QComboBox):
  popupAboutToBeShown = pyqtSignal()   #創(chuàng)建一個(gè)信號(hào)
  # def mousePressEvent(self, QMouseEvent):#這個(gè)是重寫鼠標(biāo)點(diǎn)擊事件
  #   self.popupAboutToBeShown.emit()
  def showPopup(self):          #重寫showPopup函數(shù)
    self.popupAboutToBeShown.emit()   #發(fā)送信號(hào)

這樣重寫就完成了,我之前想的是重寫鼠標(biāo)點(diǎn)擊事件,也就是上面代碼中重寫鼠標(biāo)點(diǎn)擊事件,但是經(jīng)過(guò)實(shí)驗(yàn),重寫這個(gè)函數(shù)之后下拉列表就彈不出來(lái)了,后來(lái)研究了一下,在QComboBox中應(yīng)該是鼠標(biāo)點(diǎn)擊事件觸發(fā)了下拉函數(shù)showPopup,所以改為重寫showPopup。

通過(guò)查看QT幫助文檔可以看到

virtual void showPopup()

virtual關(guān)鍵字用于修改方法、屬性、索引器或事件聲明,并使它們可以在派生類中被重寫。

3、接下來(lái)就是修改建立界面的代碼,只需要修改一行,原代碼如下

self.ComBox = QtWidgets.QComboBox(self.splitter)

原代碼是調(diào)用QComboBox類,也就是showPopup函數(shù)沒有修改過(guò),將其改為

self.ComBox = MyComboBox(self.splitter)

這是調(diào)用了重寫后的類,其他的QComboBox控件不做修改,其功能就還是正常的。

最后綁定信號(hào)與槽

self.ComBox.popupAboutToBeShown.connect(Form.refresh)

refresh槽函數(shù)在新建的py文件中定義

以上這篇PyQt5重寫QComboBox的鼠標(biāo)點(diǎn)擊事件方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論