流程
所謂高階自定義訊號與槽,指的是我們可以以自己喜歡的方式定義訊號與槽函式,並傳遞引數。自定義訊號的一般流程如下:
(1)定義訊號。
(2)定義槽函式。
(3)連線訊號與槽函式。
(4)發射訊號。
自己寫個小例子
自己寫了個很簡單的例子來說明這個邏輯問題,有乙個輸入框還有乙個按鈕,按鈕上的文字是hello,當我在輸入框中輸入了含有one這個字串的時候,按鈕的文字就變成了』nihao』
定義一下訊號:
hasonesig = qtcore.pyqtsignal(str)
self.lineedit.textchanged.connect(self.showmessage)
def showmessage(self):
str = self.lineedit.text()
if 'one' in str:
self.hasonesig.emit("nihao")
連線訊號與改變按鈕文字的槽函式
self.hasonesig.connect(self.setmessage)
def setmessage(self,msg):
self.btn.settext(msg)
完成的**
from pyqt5 import qtwidgets,qtcore
import sys
class mywidget(qtwidgets.qwidget):
hasonesig = qtcore.pyqtsignal(str)
def __init__(self):
super().__init__()
self.setui()
def setui(self):
layout = qtwidgets.qhboxlayout()
self.lineedit = qtwidgets.qlineedit()
self.btn = qtwidgets.qpushbutton("hello")
layout.addwidget(self.lineedit)
layout.addwidget(self.btn)
self.hasonesig.connect(self.setmessage)
self.lineedit.textchanged.connect(self.showmessage)
self.setlayout(layout)
self.show()
def showmessage(self):
str = self.lineedit.text()
if 'one' in str:
self.hasonesig.emit("nihao")
def setmessage(self,msg):
self.btn.settext(msg)
if __name__ == '__main__':
example = mywidget()
Qt自定義訊號槽
qt自定義訊號槽,在控制台程式中實現 qt5 如下 qt5 include news h class news public qobject void send signals void new const qstring name private qstring m name reader.h i...
Qt 自定義訊號槽
使用 connect 可以讓我們連線系統提供的訊號和槽。但是,qt 的訊號槽機制並不僅僅是使用系統提供的那部分,還會允許我們自己設計自己的訊號和槽。這也是 qt 框架的設計思路之一,用於我們設計解耦的程式。本節將講解如何在自己的程式中自定義訊號槽。訊號槽不是 gui 模組提供的,而是 qt 核心特性...
QT 3 自定義訊號槽
include subwdget.h subwdget subwdget qwidget parent qwidget parent void subwdget senslot ifndef subwdget h define subwdget h include include class sub...