訊號與槽知識點

2021-09-08 03:43:44 字數 2116 閱讀 2678

訊號與槽注意點

(1)訊號和槽是qt程式設計的乙個重要部分。這個機制可以在物件之間彼此並不了解的情況下將它們的行為聯絡起來。

槽和普通的c++成員函式很像。它們可以是虛函式(virtual),也可被過載(overload),

可以是公有的(public),保護的(protective),也可是私有的(private),它們可以像任何c++成員函式一樣被呼叫,可以傳遞任何型別的引數。

不同在於乙個槽函式能和乙個訊號相連線,只要訊號發出了,這個槽函式就會自動被呼叫。

(2)connect函式語法如下:

connect(sender, signal(signal), receiver, slot(slot));

sender和receiver是qobject物件指標,

signal和slot是不帶引數的函式原型。

signale()和slot()巨集的作用是把他們轉換成字串。

(3)訊號和槽實際使用中要考慮的一些規則:

<1>乙個訊號可以連線到多個槽:

connect(slider, signal(valuechanged(int)),spinbox, slot(setvalue(int)));

connect(slider, signal(valuechanged(int)),this, slot(updatestatusbarindicator(int)));

當訊號發出後,槽函式都會被呼叫,但是呼叫的順序是隨機的,不確定的。

<2>多個訊號可以連線到乙個槽

connect(lcd, signal(overflow()), this, slot(handlematherror()));

connect(calculator, signal(divisionbyzero()),this, slot(handlematherror()));

任何乙個訊號發出,槽函式都會執行。

<3>乙個訊號可以和另乙個訊號相連

connect(lineedit, signal(textchanged(const qstring &)),

this, signal(updaterecord(const qstring &)));

第乙個訊號發出後,第二個訊號也同時傳送。除此之外,訊號與訊號連線上和訊號和槽連線相同。

<4>連線可以被刪除

disconnect(lcd, signal(overflow()),this, slot(handlematherror()));

這個函式很少使用,乙個物件刪除後,qt自動刪除這個物件的所有連線。

<5>訊號和槽函式必須有著相同的引數型別,這樣訊號和槽函式才能成功連線:

connect(ftp, signal(rawcommandreply(int, const qstring &)),this, slot(processreply(int, const qstring &)));

<6>如果訊號裡的引數個數多於槽函式的引數,多餘的引數被忽略:

connect(ftp, signal(rawcommandreply(int, const qstring &)),this, slot(checkerrorcode(int)));

如果參速型別不匹配,或者訊號和槽不存在,在debug狀態時,qt會在執行期間給出警告。

如果訊號和槽連線時包含了引數的名字,qt將會給出警告。

<7>不僅控制項有訊號和槽,訊號和槽機制可以實現在任何從qobject繼承的子類中。

1

class employee : public

qobject26

int salary() const

7public

slots:

8void setsalary(int

newsalary);

9signals:

10void salarychanged(int

newsalary);

11private:12

intmysalary;

13};

14void employee::setsalary(int

newsalary)

1521 }

注意,只有newsalary != mysalary時才發出salary-changed()訊號,這樣避免了死迴圈的出現。

訊號的知識點總結

一 訊號的基本概念 為了更加清晰的了解訊號,那麼就拿我們最熟悉的場景切入 1 使用者輸入命令,在shell下啟動乙個前台程序。2 使用者按下ctrl c,這個鍵盤輸入就是乙個硬體中斷。3 如果cpu當前正在執行這個 則該程序的使用者空間 暫停執行,cpu從使用者態切換到核心態處理硬體中斷。4 終端驅...

陣列訊號處理知識點彙總

陣列訊號處理及maatlab實現 張小飛 電子工業出版社 2015年 空間譜估計理論與演算法 王永良 陳輝 彭應寧 萬群 清華大學出版社 2004年 自適應陣列處理 王永良 李榮鋒 丁前軍 清華大學出版社 2009年 matlab在語音頻號分析與合成中的應用 宋知用 北京航空航天大學出版社 2013...

qt 槽與訊號

槽就是乙個可以被呼叫處理特定訊號的函式 乙個小的qt類如下 class foo public qobject public slots void setvalue int signals void valuechanged int private int val qt中的元物件系統是用來處理物件間通...