Qt:SIGNAL,SLOT宏声明

Aqu*_*irl 3 qt signals-slots

可能重复:
是否可以看到Q_SIGNALS,Q_SLOT,SLOT(),SIGNAL()宏的定义?(QT)

我在谷歌上找不到Qt中宏,SIGNAL和SLOT的声明.

当我们说,连接(button1,SIGNAL(clicked()),这,SLOT(slotButton1()));

我想了解,突出显示的宏接受哪些参数?

任何指向doc的链接都将受到赞赏.

编辑1 链接我拨通了尼尔的下面的评论说:#define SLOT(a) "1"#a又是什么一个代表在这里?它没有显示在该链接中.

Bar*_*art 20

根据OP请求:

正如Neil所说,SLOT和SIGNAL宏被定义为

#define SLOT(a) "1"#a
#define SIGNAL(a) "2"#a
Run Code Online (Sandbox Code Playgroud)

#a(使用#a 字符串化运算符)将简单地将括号内的任何内容转换为字符串文字,以便从提供给宏的签名中创建名称."1"和"2"仅用于区分时隙和信号.

这篇早期文章应该为您提供更多见解.

如果你想知道"为什么?" 所有这些宏的东西和预处理,我建议你阅读" 元对象编译器 "或MOC.只是为了好玩,您可以查看MOC对您提供的代码所做的工作.查看其输出并查看其中包含的内容.这应该是非常有用的.

简而言之,通过MOC进行的预处理允许Qt实现C++不提供标准的某些功能(如信号和插槽).(虽然可以说这个概念的一些实现,与Qt无关,不需要元对象编译器)

希望有所帮助.