Qt ne propose pas d'event 'right click', du genre mousePressRightEvent() et c'est bien dommage. Donc c'est a nous de faire ce event, pas vraiment en créant un nouvelle fonction mais en modifiant la fonction mousePressEvent() classique. Pour cela nous devons dériver notre QPushButton a partir d'une nouvelle classe, exemple PushRightButton (le 'Q' étant réservé a Qt).
#
#
#import des modules Qt
from PyQt4.QtGui import *
from PyQt4.QtCore import *
#creation de la class, on precise qu'on derive la class QPushButton entre parentheses
class PushButtonRight (QPushButton):
#creation du signal emetteur (emet rien pour le moment)
rightClick = pyqtSignal()
#creation de notre fontion __init__ avec un arg string pour le nom du futur bouton
def __init__ (self, string):
#on integre la classe QPushButton a notre class PushRightButton
QPushButton.__init__(self, string)
#modification de la fontion mousePressEvent
def mousePressEvent (self, event):
#on integre la fonction QPushButton.mousePressEvent(self, event) a notre fonction PushRightButton.mousePressEvent(self, event)
QPushButton.mousePressEvent(self, event)
#condition du click droit
if event.button() == Qt.RightButton :
#emittion du signal rightClick
self.rightClick.emit()
print ('right click')
#
#
Maintenant il suffit de creer un bouton grace a notre class PushRightButton et de faire la connection:
#
#
butRightClick = PushRightButton('hello')
butRightClick.rightClick.connect(laFuturFonction)
#
#
Aucun commentaire:
Enregistrer un commentaire