Qt 回调函数的问题

guanjiangjie 2013-03-29 02:31:21
int CtiBoardEventCb(WORD wEvent,int nReference,WORD dwParam)
{
WORD newS;
switch(wEvent)
{
case EVT_CHSTAT_CHG:
newS = (WORD)(dwParam & 0xffff);
pState->nCh = nReference;
switch(newS)
{
case 1: break;
case CH_STATE_FREE:break;
case CH_STATE_PICKUPED:qDebug()<<pState->nCh<<" PICKEDUP"<<endl;break;
case CH_STATE_ALERTING:qDebug()<<pState->nCh<<" ALERTING"<<endl;break;
case CH_STATE_RINGBACK:qDebug()<<pState->nCh<<" RINGBACK"<<endl;break;
case CH_STATE_CALLOUT:qDebug()<<pState->nCh<<" CALLOUT"<<endl;break;
case CH_STATE_CONNECT:qDebug()<<pState->nCh<<" CONNECT"<<endl;break;
case CH_STATE_WAITHUNGUP:qDebug()<<pState->nCh<<" WAITHUNGUP"<<endl;break;
default:
break;
}
default:
break;
}
pState->State = newS;
return 0;
}

这是一个回调函数,我想达到的一个目的就是在回调函数的case语句中,去控制ui中的控件(上面qDebug的语句就是我要在控件内加入的信息,我现在只能打印在下面,不能打印在控件中),比如edit之类的,但是这个函数有又不是在这个mainwindow这个类中,不能直接去控制ui内的控件,我该如何去解决这个问题!请大神指导啊!
...全文
493 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
guanjiangjie 2013-04-07
  • 打赏
  • 举报
回复
引用 8 楼 openXMPP 的回复:
ui我指的是你ui要显示的widget 而不是用designer生成的那个ui_ quote=引用 7 楼 guanjiangjie 的回复:] 引用 6 楼 openXMPP 的回复: 这个地方你这样写 class ObjectInstance : public QObject { Q_OBJECT public: static ObjectInstance ……
这个UI是怎么回事?我被这里的指针搞糊涂了!还是不明白。。。
guanjiangjie 2013-04-02
  • 打赏
  • 举报
回复
引用 6 楼 openXMPP 的回复:
这个地方你这样写 class ObjectInstance : public QObject { Q_OBJECT public: static ObjectInstance *instance(); //单件接口 void callSignal(); //在回调里这样调用ObjectInstance::instance()->callSignal(); sig……
谢谢你花时间帮我写,还有疑问就是在Ui的外部能够这样连接么?在外部的话UI是没有定义的呀!
乔巴好萌 2013-04-02
  • 打赏
  • 举报
回复
ui我指的是你ui要显示的widget 而不是用designer生成的那个ui_ quote=引用 7 楼 guanjiangjie 的回复:] 引用 6 楼 openXMPP 的回复: 这个地方你这样写 class ObjectInstance : public QObject { Q_OBJECT public: static ObjectInstance *instance(); //单件接口 void callSignal(); //在回调里这样调用ObjectInstance::instance……[/quote]
乔巴好萌 2013-04-01
  • 打赏
  • 举报
回复
这个地方你这样写 class ObjectInstance : public QObject { Q_OBJECT public: static ObjectInstance *instance(); //单件接口 void callSignal(); //在回调里这样调用ObjectInstance::instance()->callSignal(); signals: void signal_from_instance(); private: ObjectInstance(); static ObjectInstance *mInstance; }; 其中 void ObjectInstance::callSignal() { emit signal_from_instance(); } 在你的UI的外部 QObject::connect( ObjectInstance::instance(), SIGNAL(signal_from_instance()),UI,SLOT(foo()));
guanjiangjie 2013-04-01
  • 打赏
  • 举报
回复
引用 3 楼 jiangcaiyang123 的回复:
这种情况,可以使用全局变量,也可以做单件。不用信号 - 槽能完成任务就好,再不行就用信号 - 槽。
能帮我写一段例子么?万分感谢。。。。什么是单件,我不是很懂,因为才刚开始学!
guanjiangjie 2013-04-01
  • 打赏
  • 举报
回复
你说的“这种情况,可以使用全局变量,也可以做单件。不用信号 - 槽能完成任务就好,再不行就用信号 - ” 能帮我写个例子么?我不是很懂,万分感谢,请你教教我!
彩阳 2013-03-29
  • 打赏
  • 举报
回复
这种情况,可以使用全局变量,也可以做单件。不用信号 - 槽能完成任务就好,再不行就用信号 - 槽。
guanjiangjie 2013-03-29
  • 打赏
  • 举报
回复
引用 1 楼 openXMPP 的回复:
引用 楼主 guanjiangjie 的回复: int CtiBoardEventCb(WORD wEvent,int nReference,WORD dwParam) { WORD newS; switch(wEvent) { case EVT_CHSTAT_CHG: newS = (WORD)(dwParam &amp; 0……
你好,我不是很理解,我刚开始学习QT,你能帮我写一点事例么,怎么去连接这个函数?
乔巴好萌 2013-03-29
  • 打赏
  • 举报
回复
引用 楼主 guanjiangjie 的回复:
int CtiBoardEventCb(WORD wEvent,int nReference,WORD dwParam) { WORD newS; switch(wEvent) { case EVT_CHSTAT_CHG: newS = (WORD)(dwParam & 0xffff); ……
你维护一个QObject的单件,在函数体外部与mainwindow做信号和槽的绑定 然后用QObject去触发对应的signal

16,216

社区成员

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

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