
QObject信号与槽建立连接
def QObjectSignal(self):
self.obj = QObject()
def destroyed_slot(obj):
print('对象被释放了', obj)
self.obj.destroyed.connect(destroyed_slot)
del self.obj
def QObjectSignal(self):
self.obj = QObject()
def changed_slot(name):
print('对象被改名了', name)
self.obj.objNameChanged.connect(changed_slot)
self.obj.setObjectName('abc')
QObject信号与槽取消连接
def QObjectSignal(self):
self.obj = QObject()
def changed_slot(name):
print('对象被改名了', name)
self.obj.objNameChanged.connect(changed_slot)
self.obj.setObjectName('abc')
self.obj.objNameChanged.disconnect()
self.obj.setObjectName('aaa')
# 不会输出abc
QObject信号与槽临时取消连接
def QObjectSignal(self):
self.obj = QObject()
def changed_slot(name):
print('对象被改名了', name)
self.obj.objNameChanged.connect(changed_slot)
self.obj.blockSignals(True)
self.obj.setObjectName('abc')
self.obj.blockSignals(False)
self.obj.setObjectName('aaa')
# 输出:aaa
obj.receivers(信号名) 返回连接到信号的接收器数量
def QObjectSignal(self):
self.obj = QObject()
def changed_slot(name):
print('对象被改名了', name)
self.obj.objNameChanged.connect(changed_slot)
self.obj.receivers(self.obj.objNameChanged) # 返回连接到信号的接收器数量,此处为 1
案例1
btn = QPushbutton(self)
btn.setText('click')
def clicked_slot():
print('被点击了')
btn.clicked.connect(clicked_slot)
案例2
# 方法1
def changed_slot(title):
print('标题被修改了', title)
window.windowTitleChanged.disconnect()
window.setWindowTitle('abc-' + title)
window.windowTitleChanged.connect(changed_slot)
window.windowTitleChanged.connect(changed_slot)
window.setWindowTitle('hello')
window.setWindowTitle('hello111')
# 方法2
def changed_slot(title):
print('标题被修改了', title)
window.blockSignals(True)
window.setWindowTitle('abc-' + title)
window.blockSignals(False)
window.windowTitleChanged.connect(changed_slot)
window.setWindowTitle('hello')
window.setWindowTitle('hello111')