Qt中的訊號和槽

2021-10-24 09:51:43 字數 1512 閱讀 2989

目錄

1、概念

2、自定義的訊號和槽

3、自定義的訊號和槽出現過載

4、qstring轉為char*

5、lambda表示式

訊號和槽是用於將訊號傳送者與訊號處理者關聯起來:connect(訊號的傳送者,傳送的具體資訊,訊號的結束者,訊號的處理(槽))

connect(btn3, &mypushbutton::clicked, this, &mywidget::close);
訊號和槽的優點:鬆散耦合,訊號的傳送端和接收端本身是沒有關聯的,通過connnect連線,將兩端耦合在一起

1、訊號可以連線訊號

2、乙個訊號可以連線多個槽函式

3、多個訊號可以連線同乙個槽函式

3、訊號和槽引數、型別必須一一對應

4、訊號的引數個數可以多於槽的引數個數,反之則不可以

5、qt4版本以前的訊號和槽連線方式 connect(tc,signal(hungry()),st,slot(treat()))

qt4版本優點:引數直觀,缺點:型別不做檢測

widget.h/cpp中關聯訊號和槽,觸發訊號,實現功能

class widget : public qwidget

;#include "widget.h"

#include "qpushbutton"

#include "qstring.h"

/* 實現功能:

1、下課後,老師觸發乙個訊號,餓了,學生響應訊號,請吃飯

*/void widget::class_over()

widget::widget(qwidget *parent) : qwidget(parent)

widget::~widget()

teacher.h 自定義訊號

#ifndef teacher_h

#define teacher_h

#include #include "qstring.h"

class teacher : public qobject

;#endif // teacher_h

student.h/cpp 自定義槽函式

#ifndef student_h

#define student_h

#include class student : public qobject

;#endif // student_h

#include "student.h"

#include student::student(qobject *parent) : qobject(parent)

void student::treat()

void student::treat(qstring foodnme)

Qt中的訊號和槽

訊號槽是qt中特有的概念。它使得程式設計師將不同的object繫結起來,而object物件間並不需要對相互了解。slots也是普通的c 方法,它們可以是virtual 可以被過載 可以使private protected public,可以像其它c 方法一樣有各種型別的引數,signals則無這些屬...

Qt訊號和槽

qt將訊號和槽關聯起來的connect使用時需要注意帶相應的引數,否則會出現訊號發出後不能呼叫槽的問題,例子如下 發出訊號的宣告 signals void receiveddata uchar dat,uint len 接收訊號的槽宣告 private slots void getdata ucha...

Qt 訊號和槽

函式原型 qobject connect const qobject sender,const char signal,const qobject receiver,const char method,qt connectiontype type qt autoconnection 通常使用的con...