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

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/

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值