QT的emit是啥语法?

shootingstars 2012-06-05 02:28:54
比如下述语句:
emit mySignal();
这个emit是个啥?宏吗?它的定义是什么?

或者它必须经过moc编译?最后变为C++是什么样子的语句?
...全文
2399 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Emma_8 2014-07-15
  • 打赏
  • 举报
回复
触发后面的信号?
zhu_xz 2012-06-06
  • 打赏
  • 举报
回复 1
首先你的类声明里面得定义一个信号:
signals:
void mySignal();

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


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

本质上,这个由moc生成的mySignal()函数会被调用,然后Qt内部会调用预期连接的所有slot。
wshn13 2012-06-06
  • 打赏
  • 举报
回复
emit 只是在rcc处理带Q_OBJECT的文件时候起标识作用 在我们emit some_signal() 时候 就相当于直接调some_signal()函数 在我们使用时候最好还是带emit吧 一目了然
wshn13 2012-06-06
  • 打赏
  • 举报
回复
#define emit
tst1255 2012-06-06
  • 打赏
  • 举报
回复
呵呵,我是来接分的。
谢谢楼主。
AAA20090987 2012-06-06
  • 打赏
  • 举报
回复
emit是一个宏定义,是给人看的,C++的编辑器直接忽略它
meng_meng21 2012-06-06
  • 打赏
  • 举报
回复
不明白什么
jdwx 2012-06-05
  • 打赏
  • 举报
回复
Qt没有编译器,不过听说要自己做编译器了,不知道是不是真的。
emit 就是发射信号的意思,一个宏。
zhengjiankang 2012-06-05
  • 打赏
  • 举报
回复
qt 有qt的编译器。moc。不就是么。
你没有qt的编译器能编译qt project么
shootingstars 2012-06-05
  • 打赏
  • 举报
回复
to zhengjiankang:
问题是QT是C++写的,如果C++编译器不支持,不是什么语法都可以的。
zhengjiankang 2012-06-05
  • 打赏
  • 举报
回复
没有什么是C++编译的。。
都是编译器编译的。
只要编译器支持。
你什么语法都可以。
shootingstars 2012-06-05
  • 打赏
  • 举报
回复
这个代码最后是由C++编译的吗?如果是,最后不论是宏还是其他的方式,它扩展出来是什么样子?(这个必须符合C++语法)
  • 打赏
  • 举报
回复
这不是c++的语法 是Qt框架库里扩展的机制,就当是宏理解好了 emit 就是“发射”;使用的时候必须Q_OBJECT宏添加进来,或者使用QObject的静态函数
yingwenzifu 2012-06-05
  • 打赏
  • 举报
回复
emit 可以当作宏定义来理解,可以看看QObject定义的activate_signal的成员函数~~
shootingstars 2012-06-05
  • 打赏
  • 举报
回复
嗯。那emit是个什么东西呢?这个东西明显不合符c/c++的语法啊。
shen_wei 2012-06-05
  • 打赏
  • 举报
回复
类似。。SendMessage PostMessage

shootingstars 2012-06-05
  • 打赏
  • 举报
回复
我不是问如何连接信号和槽,而是希望知道emit到底是个啥。。。
shen_wei 2012-06-05
  • 打赏
  • 举报
回复
在你的程序中应该能找到类似这样的语句:
connect(obj,SIGNAL(changeCurrentShape(*)),anotherobj,SLOG(FUN(*)))

当执行到 emit changeCurrentShape(Shape::Triangle) 时,QT的信号槽机制,会自动触发FUN()函数

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧