当前位置: 代码迷 >> QT开发 >> Qt 回调函数的有关问题
  详细解决方案

Qt 回调函数的有关问题

热度:31   发布时间:2016-04-25 03:58:57.0
Qt 回调函数的问题
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内的控件,我该如何去解决这个问题!请大神指导啊!
qt ui

------解决方案--------------------
引用:
int CtiBoardEventCb(WORD wEvent,int nReference,WORD dwParam)
{
    WORD newS;
    switch(wEvent)
    {
    case EVT_CHSTAT_CHG:
        newS = (WORD)(dwParam &amp; 0xffff);
       ……


你维护一个QObject的单件,在函数体外部与mainwindow做信号和槽的绑定
然后用QObject去触发对应的signal

------解决方案--------------------
这种情况,可以使用全局变量,也可以做单件。不用信号 - 槽能完成任务就好,再不行就用信号 - 槽。
  相关解决方案