欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程资源 > 编程问答 >内容正文

编程问答

qt / signal、slot、signals、slots、emit 关键字含义 -凯发k8官方网

发布时间:2024/10/14 编程问答 8 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 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!)

总结

以上是凯发k8官方网为你收集整理的qt / signal、slot、signals、slots、emit 关键字含义的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

网站地图