首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

信号与槽有关问题

2012-10-27 
信号与槽问题C/C++ codesz和RenderArea类,打算使用信号与槽通信,将sz中的变量enableDraw发送到RenderArea

信号与槽问题

C/C++ code
sz和RenderArea类,打算使用信号与槽通信,将sz中的变量enableDraw发送到RenderArea中。但实现不了,进不了槽函数getDrawSignOfSZ中。求解释。sz类:信号:signal:void emitEnableDrawSign(bool)发射信号:void sz::onDrawButtonClicked(void){enableDraw = true;emit emitEnableDrawSign(enableDraw);}RenderArea类:构造函数中:sz * temp = new sz;connect(temp,SIGNAL(emitEnableDrawSign(bool),this,SLOT(getDrawSignOfSZ(bool))));void RenderArea::getDrawSignOfSZ(bool b){enableDrawOfSz = b;}槽:public slots:void GetDrawSignOfSz(bool b)


[解决办法]
槽函数名字不对。。应该有提示的运行时候。GetDrawSignOfSz应该是大写哈。你连接的时候是小写。
connect(temp,SIGNAL(emitEnableDrawSign(bool),this,SLOT(getDrawSignOfSZ(bool))));
[解决办法]
问题分两部分:
在发射信号处添加qDebug()<<"?????";
槽里也添加一个,看看是没发射还是没连接好。
[解决办法]
C/C++ code
connect(temp,SIGNAL(emitEnableDrawSign(bool),this,SLOT([color=#FF0000]getDrawSignOfSZ[/color](bool))));public slots:void [color=#FF0000]GetDrawSignOfSz[/color](bool b)
[解决办法]
C/C++ code
connect(temp,SIGNAL(emitEnableDrawSign(bool),this,SLOT(getDrawSignOfSZ(bool))));public slots:void GetDrawSignOfSz(bool b)
[解决办法]
槽函数名称写错了
[解决办法]
Qt4的信号槽 connect在编译时是不检查的。
在运行时。通过metaobject,类似字符串比较进行的。
你运行的时候output view里肯定会有 getDrawSignOfSZ不存在的字样。

还有。你要确保connect是在emit 信号之前执行的。

ps:另外的一个贴关了把。
[解决办法]
qDebug() << "your string" 你可以理解成 std::cout << "your string".在控制台中打印出你的变量。
[解决办法]
C/C++ code
void GetDrawSignOfSz(bool b) 

热点排行