• 镜头管理系统客户端开发小结(二)


    上一篇小结提到PySide的信号槽机制,这篇文章主要总结PySide中的事件机制。

    先上一段代码:

    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对象发生鼠标双击事件时就会触发该函数。执行内部语句。

    在该函数中,我实例化了一个名为SchedulePanel的控件对象,并通过self.count这个计数器机制来控制SchedulePanel对象的显示与关闭。

    这种方法在PySide的UI控制中应该是广泛存在的,我特意写出来,给自己加深印象吧。

  • 相关阅读:
    区块链系列教程
    第三章 通过java SDK 实现个性化智能合约的部署与测试
    第一章 区块链系列 联盟链FISCO BCOS 底层搭建
    ABP 框架 数据库底层迁移 Mysql 集群
    ABP 框架代码批量生成器
    基于百度理解与交互技术实现机器问答
    微软人工智能和对话平台--知识商城体验
    基于百度AI实现 车牌识别
    最近整理AI相关感想
    百度OCR文字识别-身份证识别
  • 原文地址:https://www.cnblogs.com/hksac/p/5243002.html
Copyright © 2020-2023  润新知