Qt中自定義訊號與槽的問題

2021-09-25 08:14:50 字數 1559 閱讀 1990

流程

所謂高階自定義訊號與槽,指的是我們可以以自己喜歡的方式定義訊號與槽函式,並傳遞引數。自定義訊號的一般流程如下:

(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...