美文网首页
PyQt5 Emitting signals(QObject类的

PyQt5 Emitting signals(QObject类的

作者: _Mirage | 来源:发表于2020-04-02 15:00 被阅读0次

重点是QObject类的实例化对象可以发出信号,然后pyqtSignal类的实例化可以创建一个新的信号类型。

代码:

# coding='utf-8'

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtCore import pyqtSignal, QObject


# 创建继承自QObject类的子类,这个子类的实例化对象就可以发出信号
class Communicate(QObject):
    # 创建一个叫close_app的新信号
    close_app = pyqtSignal()


class Gui(QMainWindow):
    def __init__(self):
        super().__init__()
        self.start()

    def start(self):
        # 实例化QObject类的对象为self.c,作用还是可以类内通信
        self.c = Communicate()
        # 给实例化的QObject对象绑定一个slot(退出程序)\
        # 这相当于是一个新的信号
        self.c.close_app.connect(self.close)

        self.setGeometry(300, 300, 290, 150)
        self.setWindowTitle('Emit Signal')
        self.show()

    # 重新鼠标点击事件
    # 当鼠标点击后让QObject对象的实例发出信号,
    # 发出的信号就被self.close这个slot接受并处理
    # 此时的event source 就是self.c, event object就是QMainWindow对象\
    # event target就是mousePressEvent(因为是这个函数里面发出的信号)
    def mousePressEvent(self, e) -> None:
        self.c.close_app.emit()


win = QApplication(sys.argv)
gui = Gui()
sys.exit(win.exec_())
运行结果: image.png

鼠标点击则退出。

相关文章

  • PyQt5 Emitting signals(QObject类的

    重点是QObject类的实例化对象可以发出信号,然后pyqtSignal类的实例化可以创建一个新的信号类型。 代码...

  • PyQt5学习记录(三):Emitting signals

    Objects created from a QObject can emit signals. The foll...

  • QObject类

    徐红伟@百香果科技 QObject类是所有Qt对象的基类。是Qt对象模型的基础。 Signals和Slots机制 ...

  • PyQt(三) 类继承结构图

    一. PyQt5 类的继承结构图 二. 如何获取一个类的父类和子类? 使用QObject.mro()获取父类, 使...

  • PyQT5信号槽

    官方文档: http://pyqt.sourceforge.net/Docs/PyQt5/signals_slot...

  • Qt 事件管理

    参考:Events and signals in PyQt5 所有的应用都是事件驱动的。事件大部分都是由用户的行为...

  • QT5编程系列 (1)Q_OBJECT

    只有继承了QObject类的类,才具有信号槽的能力。所以,为了使用信号槽,必须继承QObject。凡是QObjec...

  • PyQt5编程(32):在窗口中布局组—QToolBox类

    QTabWidget类的继承层次结构如下:(QObject, QPaintDevice) - QWidget - ...

  • QObject源码解析

    QObject是Qt的基类 QObject的大小是8,除了虚函数表指针需要的4个字节以外,另外的4个字节是QSco...

  • Qt黑科技

    不能继承于QObject的类就一定不能使用信号槽? 首先不能继承QObject的情况在开发中遇到得并不多,笔者在一...

网友评论

      本文标题:PyQt5 Emitting signals(QObject类的

      本文链接:https://www.haomeiwen.com/subject/jrsxphtx.html