class MyLabel(QtGui.QLabel,ParentWindow):
def __init__(self,index,parent = None):
QtGui.QLabel.__init__(self,parent)
self.index = int(index)
self.shotname = None
self.projectID = None
self.newWindow = None
self.count = 0
def setText(self,n):
QtGui.QLabel.setText(self,n)
def text(self):
return QtGui.QLabel.text(self)
def mouseDoubleClickEvent(self,event):
self.shotname = ParentWindow.subshotslist[self.index][‘Shot‘][0]
dictionary = ParentWindow.newstream.getItemFromGanttData(self.shotname)
self.newWindow = SchedulePanel(dictionary)
#print self.shotname
if self.count == 0:
self.count = 1
self.newWindow.show()
self.newWindow.move(event.globalPos())
else:
self.newWindow.close()
self.count = 0
我们都知道QtGui.QLabel类中是没有事件机制的。想要给该QtGui.QLabel类添加事件,就需要建立一个继承QtGui.QLabel的新类。在该新类中添加一系列事件函数。
本文提供的代码中创建了一个名为MyLabel的类,该类继承自QtGui.QLabel类,及一个本人自定义的名为ParentWindow的类,ParentWindow作为一个父类主要用于保存一些公用参数,可以无视。
在MyLabel类中我添加了一个名为mouseDoubleClickEvent的方法,该方法传入一个名为event的对象,event显然是一个获取当前鼠标位置的对象,而mouseDoubleClickEvent方法则类似于c++中的虚函数,在MyLabel对象发生鼠标双击事件时就会触发该函数。执行内部语句。