Qt:SIGNAL,SLOT宏声明

时间:2011-05-04 08:39:57

标签: qt signals-slots

  

可能重复:
  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 代表什么?它没有显示在该链接中。

1 个答案:

答案 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无关,不需要元对象编译器)

希望有所帮助。