C++ Qt与PyQt5 信号与槽 对比说明

版权声明:版权所有,盗版必究。欢迎转载收藏。 https://blog.csdn.net/yl_best/article/details/83784142

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/

 

展开阅读全文

没有更多推荐了,返回首页