当前位置: 代码迷 >> QT开发 >> QT的emit是啥语法?该如何处理
  详细解决方案

QT的emit是啥语法?该如何处理

热度:75   发布时间:2016-04-25 03:16:59.0
QT的emit是啥语法?
比如下述语句:
emit mySignal();
这个emit是个啥?宏吗?它的定义是什么?

或者它必须经过moc编译?最后变为C++是什么样子的语句?

------解决方案--------------------
#define emit 

------解决方案--------------------
emit 只是在rcc处理带Q_OBJECT的文件时候起标识作用 在我们emit some_signal() 时候 就相当于直接调some_signal()函数 在我们使用时候最好还是带emit吧 一目了然
------解决方案--------------------
首先你的类声明里面得定义一个信号:
signals:
void mySignal();

当moc执行的时候,就会自动生成一个签名为void mySignal()的函数,并且添加相应代码以便进行信号和槽的连接。


而emit关键字其实仅仅起着修饰的作用,所以以下两行是一样的:
emit mySignal();
mySignal();

本质上,这个由moc生成的mySignal()函数会被调用,然后Qt内部会调用预期连接的所有slot。
------解决方案--------------------
emit是一个宏定义,是给人看的,C++的编辑器直接忽略它
------解决方案--------------------
呵呵,我是来接分的。
谢谢楼主。
  相关解决方案