日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT信号与槽机制需要注意的问题

發布時間:2023/12/19 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT信号与槽机制需要注意的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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:

      void apply(void(*applyFunction)(QList*,void*),char*);----------------不合法

  };

  但是:

  typedef void(*ApplyFunctionType)(QList*,void*);

  class A:public QObject{

    Q_OBJECT

    public slots:

      void apply(applyFunctionType,char*);------------------------------------可以

  };

7、信號與槽的綁定發生在運行時刻,不能有缺省參數。

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

9、嵌套類不能位于信號或者槽區域內,也不能有信號或者槽。

10、友元聲明不能位于信號或者槽聲明區域內。他們應該在普通C++的private,protected,或者public區域內聲明。

轉載于:https://www.cnblogs.com/JohannaFeng/p/4720459.html

總結

以上是生活随笔為你收集整理的QT信号与槽机制需要注意的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。