qt / signal、slot、signals、slots、emit 关键字含义 -凯发k8官方网
凯发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根据上述代码可知如下:
关键字 | 实际代码 |
signals | public |
slots | (空) |
emit | (空) |
(saw:game over!)
总结
以上是凯发k8官方网为你收集整理的qt / signal、slot、signals、slots、emit 关键字含义的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: javascript / dom、bom
- 下一篇: