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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt / SIGNAL、SLOT、signals、slots、emit 关键字含义

發布時間:2024/10/14 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt / SIGNAL、SLOT、signals、slots、emit 关键字含义 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、SIGNAL、SLOT

源碼路徑:/home/(name)/Qt5.14.2/5.14.2/Src/qtbase/src/corelib/kernel/qobjectdefs.h

Q_CORE_EXPORT const char *qFlagLocation(const char *method); #ifndef QT_NO_META_MACROS#ifndef QT_NO_DEBUG // Debug#define QLOCATION "\0" __FILE__ ":" QT_STRINGIFY(__LINE__)#ifndef QT_NO_KEYWORDS#define METHOD(a) qFlagLocation("0" #a QLOCATION)#endif#define SLOT(a) qFlagLocation("1" #a QLOCATION)#define SIGNAL(a) qFlagLocation("2" #a QLOCATION)#else // Release#ifndef QT_NO_KEYWORDS#define METHOD(a) "0" #a#endif#define SLOT(a) "1" #a#define SIGNAL(a) "2" #a#endif#define QMETHOD_CODE 0 // member type codes#define QSLOT_CODE 1#define QSIGNAL_CODE 2 #endif // QT_NO_META_MACROS

由上述代碼可知,關鍵字 SIGNAL 和 SLOT 實際上是兩個宏,其功能均是將信號函數和槽函數字符串化并在前面加上標識符:1或者2,以用來區分槽和信號。

在 Debug 模式下,上述字符串中還會加入文件名行號,用以在信號槽出錯時輸出響應的調試信息。

二、signals、slots、emit

源碼路徑:/home/(name)/Qt5.14.2/5.14.2/Src/qtbase/tests/auto/tools/moc/no-keywords.h

#define signals Q_SIGNALS #define slots Q_SLOTS #define emit Q_EMIT

源碼路徑:/home/(name)/Qt5.14.2/5.14.2/Src/qtbase/src/corelib/kernel/qobjectdefs.h?

#ifndef QT_ANNOTATE_ACCESS_SPECIFIER#define QT_ANNOTATE_ACCESS_SPECIFIER(x) #endif ... #define Q_SLOTS QT_ANNOTATE_ACCESS_SPECIFIER(qt_slot) #define Q_SIGNALS public QT_ANNOTATE_ACCESS_SPECIFIER(qt_signal) #define Q_EMIT

根據上述代碼可知如下:

關鍵字實際代碼
signalspublic
slots(空)
emit(空)

(SAW:Game Over!)

總結

以上是生活随笔為你收集整理的Qt / SIGNAL、SLOT、signals、slots、emit 关键字含义的全部內容,希望文章能夠幫你解決所遇到的問題。

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