当前位置: 代码迷 >> QT开发 >> Qt 采取emit发射信号,编译器报出信号无法解析的外部符号
  详细解决方案

Qt 采取emit发射信号,编译器报出信号无法解析的外部符号

热度:58   发布时间:2016-04-25 04:17:33.0
Qt 采用emit发射信号,编译器报出信号无法解析的外部符号?
自己编写了一个TCP类 继承了QObject 用于实现tcp连接的server端, 当有一个client的连接请求到来时会在UI 类中提升信息。通过信号槽机制实现。
现在的问题是,在tcp的类中emit时会报出信号函数是无法解析的外部符号,在UI 类中已经实现了connect,信号与槽都是一个类型的参数,信号只声明没定义,槽已定义好。。。找了半天仍没有找到原因。大家帮帮我吧,,怎么整啊 ???
    emit sndClientInfo(tcpSkt->peerAddress().toString());
//信号发射

connect(&server , SIGNAL(sndClientInfo(const QString &)) , this , SLOT(updateStatusBar(const QString &)));//UI类中的connect函数。
------最佳解决方案--------------------
Q_OBJECT 
------其他解决方案--------------------
你里面绑定的参数都是 const QString &
你传的是一个QString &
你可以先
const QString & addr = tcpSkt->peerAddress().toString(); 
再emit试试
------其他解决方案--------------------
信号 sndClientInfo 定义了吗?
------其他解决方案--------------------
你的H文件中有定义的信号或槽没有使用吧
------其他解决方案--------------------
引用:
信号 sndClientInfo 定义了吗?

没有啊 我看网上说信号不用定义吧  只声明就行啊。。
------其他解决方案--------------------
就是声明
那声明过应该可以的呀。
------其他解决方案--------------------
你应该是server类里面没有定义sndClientInfo信号
------其他解决方案--------------------
QObject::connect
------其他解决方案--------------------
emit sndClientInfo(tcpSkt->peerAddress().toString());  不会是认为这个就是声明把?
  相关解决方案