Qt知識總結(一)

2021-09-27 07:16:26 字數 1735 閱讀 5340

在qt中設定好的事件被觸發,可以傳送指定的訊號,而這個訊號是以廣播的方式傳遞的。訊號可分為預定義訊號和自定義訊號,自定義訊號需要使用signals進行修飾

槽是接受訊號後的相應的動作,在qt4中槽函式需要使用slots進行修飾,而在qt5中則不再需要了。

注意:槽函式的引數與返回型別應與訊號一致;槽函式可使用lambda表示式來替換

聯結器connet可以將訊號和槽關聯起來,但對於函式過載的訊號,在qt5中需要使用函式指標進行宣告具體的訊號,而在qt4中不需要

注意:qt4中使用巨集signal和slot完成對訊號和槽的連線,將訊號和槽轉換成字串,編譯時不進行錯誤校驗

#include

"mainwindow.h"

#include

#include

#include

#include

#include

#include

mainwindow::

mainwindow

(qwidget *parent)

:qmainwindow

(parent));

// 2.預定義訊號,預定義槽

connect

(button2,

&qpushbutton::clicked,

this

,&qmainwindow::close)

;// 3.預定義訊號,自定義槽

connect

(button3,

&qpushbutton::clicked,

this

,&mainwindow::myslot)

;connect

(button4,

&qpushbutton::clicked,

this

,&mainwindow::sendsignal)

;// 4.自定義訊號,自定義槽qt, qt4實現方法

// connect(this, signal(mysignal()), this, slot(myslot()));

// connect(this, signal(mysignal(qstring)), this, slot(myslot2(qstring)));

// 4.自定義訊號,自定義槽qt, qt5實現方法

void

(mainwindow::

*signal1)()

=&mainwindow::mysignal;

void

(mainwindow::

*signal2)

(qstring)

=&mainwindow::mysignal;

connect

(this

, signal1,

this

,&mainwindow::myslot)

;connect

(this

, signal2,

this

,&mainwindow::myslot2);}

void mainwindow::

myslot()

void mainwindow::

myslot2

(qstring mes =

"open file"

)void mainwindow::

sendsignal()

Qt知識點總結

自定義訊號槽注意事項 傳送者和接收者都需要是qobject 的子類 使用signals 標記訊號函式,訊號是乙個函式宣告,返回void,不需要實現函式 訊號作為函式名,不需要在cpp 函式中新增任何實現 槽函式是普通的成員函式,會受到public private protected 的影響 使用em...

QT 知識小結 一

1 qt介面亂碼的解決方法 解決在win7系統外其它系統主介面上漢字為亂碼的情況 可能是缺少相關的字型所引起的問題 qtextcodec codec qtextcodec codecforname system qtextcodec setcodecforlocale codec qtextcode...

Qt學習總結(一)

1 c 檔案中不同類如何共用乙個變數 標頭檔案1.h 原始檔1.cpp 其他原始檔2.cpp,3.cpp這些原始檔都包含標頭檔案1.h 方法 在1.h宣告全域性變數 extern int n 在1.cpp定義該全域性變數 int n 0 2.cpp和3.cpp均可直接使用變數n。2 正規表示式 第一...