QT訊號與槽機制需要注意的問題

2022-09-03 18:51:14 字數 991 閱讀 7266

1、訊號與槽的效率是非常高的,但是同真正的**函式比較起來,由於增加了靈活性,因此在速度上還是有所損失。當然這種損失相對來說是比較小的,但是要追求高效率的話,比如實時系統,就要盡可能避免。

2、訊號與槽機制與普通函式的呼叫一樣,如果使用不當的話,在程式執行時也可能產生死迴圈。因此,在定義槽函式時一定要注意避免間接形成無限迴圈,即在槽中再次傳送所接收到的同樣訊號,防止死迴圈。

3、如果乙個訊號與多個槽相聯絡的話,那麼,當這個訊號被發射時,與之相關的槽被啟用的順序將是隨機的。

4、巨集定義不能用在signal和slot的引數中。既然moc工具不擴充套件#define,因此,在signals和slots中攜帶的巨集就不能正確的工作,因此不帶引數是可以的。比如:

#define a(x) x

signals:

void somesignal(a(x))-------------------錯的

5、建構函式不能用在signals或者slots宣告區域。比如

class a:public qobject{

q_object

public slots:

a(qobject *parent,const char *name);----------不合法

6、函式指標不能作為訊號或者槽的引數,但是可以試試繞過這個限制。比如:

class a:public qobject{

q_object

public slots:

但是:class a:public qobject{

q_object

public slots:

7、訊號與槽的繫結發生在執行時刻,不能有預設引數。

8、也不能攜帶模板類引數,即使moc不報錯,也可能達不到預期效果(也可以用typedef繞過這個問題)。

9、巢狀類不能位於訊號或者槽區域內,也不能有訊號或者槽。

10、友元宣告不能位於訊號或者槽宣告區域內。他們應該在普通c++的private,protected,或者public區域內宣告。

QT訊號與槽機制

qt訊號與槽 posted on 2010 04 08 15 37 feisky 訊號與槽作為qt的核心機制在qt程式設計中有著廣泛的應用,本文介紹了訊號與槽的一些基本概念 元物件工具以及在實際使用過程中應注意的一些問題。qt是乙個跨平台的c gui應用構架,它提供了豐富的視窗部件集,具有物件導向 ...

Qt 訊號與槽機制

下部分 來自於我自己新增了傳遞引數的部分 ifndef my object define my object include define my slots define my signals protected define my emit class myobject struct metaob...

Qt的訊號與槽機制

qt使用訊號與槽機制進行物件間的通訊。當某個物件的狀態發生變化時,該物件會觸發 乙個訊號。該訊號和另外一些物件的槽函式繫結,訊號的觸發將導致執行這些槽函式,這些 槽函式將處理第乙個物件狀態的變化,完成物件之間的通訊。a 訊號與槽的定義 a 乙個類的訊號函式應該滿足以下語法約束。1 函式返回值是voi...