C++ Qt
格式:QObject::connect(sender, SIGNAL(what), receiver, SLOT(doWhat()))
举例:QObject::connect(ui->setTitleButton, SIGNAL(clicked()), this, SLOT(changeWindowTitle()));
说明:信号发出者 -- 按钮(ui->setTitleButton)发出一个信号--单击信号(clicked()),
信号接收者 -- this更改窗口标题(“changeWindowTitle()”就是slot要做的事情)
PyQt:
格式:Sender.signal.connect(receiver.slot)【自定义信号也是一样的格式】
举例:mySlider.valueChanged.connect(myLcdNumber.display)
说明:信号发出者 -- 滑动条发出一个信号--数字变化,
信号接收者 -- LcdNumber显示变化后的数字(“显示变化后的数字”就是slot要做的事情)
用户看到的现象就是:滑动条数字变化,LcdNumber也跟着变化
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
ZetCode PyQt5 tutorial
In this example, we connect a signal
of a QSlider to a slot of a QLCDNumber.
Author: Jan Bodnar
Website: zetcode.com
Last edited: January 2017
"""
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QWidget, QLCDNumber, QSlider,
QVBoxLayout, QApplication)
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
lcd = QLCDNumber(self)
sld = QSlider(Qt.Horizontal, self)
vbox = QVBoxLayout()
vbox.addWidget(lcd)
vbox.addWidget(sld)
self.setLayout(vbox)
sld.valueChanged.connect(lcd.display)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Signal and slot')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
更多教程请参考:
http://zetcode.com/gui/pyqt5/eventssignals/