可能重复:
Is it possible to see definition of Q_SIGNALS, Q_SLOT, SLOT(), SIGNAL() macros? (Qt)
我在谷歌找不到Qt中的宏,SIGNAL和SLOT声明。
当我们说 connect(button1, SIGNAL (clicked()),这个, SLOT (slotButton1())); < / p>
我想了解,突出显示的宏接受哪些参数?
任何指向doc的链接都将受到赞赏。
编辑1
The link我通过下面的 Neil's 评论说:#define SLOT(a) "1"#a
代表什么?它没有显示在该链接中。
答案 0 :(得分:20)
根据OP请求:
正如Neil所说,SLOT和SIGNAL宏被定义为
#define SLOT(a) "1"#a
#define SIGNAL(a) "2"#a
#a(带#a stringizing operator)将简单地将括号内的任何内容转换为字符串文字,以便从提供给宏的签名中创建名称。 “1”和“2”仅用于区分时隙和信号。
This earlier post应该为您提供更多见解。
如果你想知道“为什么?”在所有这些宏观内容和预处理中,我建议您阅读“Meta-Object-Compiler”或MOC。只是为了好玩,您可以查看MOC对您提供的代码所做的工作。查看其输出并查看其中包含的内容。这应该是非常有用的。
简而言之,通过MOC进行的预处理允许Qt实现C ++不提供标准的某些功能(如信号和插槽)。 (虽然可以说这个概念的一些实现,与Qt无关,不需要元对象编译器)
希望有所帮助。