QT中这个函数是回调函数问题!

guanjiangjie 2013-04-27 10:14:57
void MainWindow::CtiBoardEventCb(WORD wEvent,int nReference,WORD dwParam,DWORD dwUser)
{
WORD newS;
switch(wEvent)
{
case EVT_CHSTAT_CHG:
newS = (WORD)(dwParam & 0xffff);
pState->nCh = nReference;
switch(newS)
{
case 1:qDebug()<<pState->nCh<<"UNAVAILABLE"; break;
case CH_STATE_FREE:qDebug()<<pState->nCh<<" IDLE";break;
case CH_STATE_PICKUPED:qDebug()<<pState->nCh<<" PICKEDUP";pare->setinformation(pState->nCh,"PICKEDUP");break;
case CH_STATE_ALERTING:qDebug()<<pState->nCh<<" ALERTING";break;
case CH_STATE_RINGBACK:qDebug()<<pState->nCh<<" RINGBACK";break;
case CH_STATE_CALLOUT:qDebug()<<pState->nCh<<" CALLOUT";break;
case CH_STATE_CONNECT:qDebug()<<pState->nCh<<" CONNECT";break;
case CH_STATE_WAITHUNGUP:qDebug()<<pState->nCh<<" WAITHUNGUP";break;
default:
break;
}
default:
break;
}
pState->State = newS;
}
我想处理case后面的语句,case后面的信息我是想要去通过控制ui,把信息写入到tablewigdet里面,但是不如何去调用,我希望能帮我指点下,我刚开始学QT,对很多东西都不是很理解!最好能够写出例子,多谢大家了!
...全文
316 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
donwmufromdying 2013-05-04
  • 打赏
  • 举报
回复
这个例子里,MyFormItem *formItem = static_cast<MyFormItem *>(clientData); clientData就是类似你那边的userData. 其实传进来是一个调用该函数对象的指针
donwmufromdying 2013-05-04
  • 打赏
  • 举报
回复
我举个简单例子:
void MyForm::entryFocusCB(Widget w, XtPointer clientData, XtPointer) 
{
   MyFormItem *formItem = static_cast<MyFormItem *>(clientData); 
   MyForm *form     = formItem->getForm(); 
   QByteArray    stuff    = formItem->getContent(); 

   form->setUndoCache( formItem->getFieldW(), stuff.data()); 

   formItem->activateWidget(w); 
   
// We're doing an activate widget instead of an activate field because the
// date entry widget has three widgets in it.
}
guanjiangjie 2013-05-03
  • 打赏
  • 举报
回复
引用 8 楼 foxyz 的回复:
WORD dwParam,DWORD dwUser 这里边的dwUser应该就是调用者对象。你看看调用者是哪个对象。没有上下文很难帮到你了
这个参数我没有用到,我不知道该如何去调用,你能举个简单的例子么?多谢多谢!
donwmufromdying 2013-05-03
  • 打赏
  • 举报
回复
WORD dwParam,DWORD dwUser 这里边的dwUser应该就是调用者对象。你看看调用者是哪个对象。没有上下文很难帮到你了
guanjiangjie 2013-05-03
  • 打赏
  • 举报
回复
引用 6 楼 foxyz 的回复:
楼主,你这是一个void MainWindow::CtiBoardEventCb(WORD wEvent,int nReference,WORD dwParam,DWORD dwUser)换句话说,是MainWindow的一个成员函数。你说是静态的。那么能不能在函数中加上调用者对象指针呢?一般的callback函数都至少有两个必须得参数:调用者对象指针,调用者参数。。否则静态的很不好处理啊。 从你不完整的描述(没有完整上下文)情况下,你这种要求我还真没见过。外部要用ui很简单, 你把对象私有的变量ui放到public里就能访问了啊
这个函数的传递的参数是不能改变的,必须这几个参数!
donwmufromdying 2013-05-03
  • 打赏
  • 举报
回复
楼主,你这是一个void MainWindow::CtiBoardEventCb(WORD wEvent,int nReference,WORD dwParam,DWORD dwUser)换句话说,是MainWindow的一个成员函数。你说是静态的。那么能不能在函数中加上调用者对象指针呢?一般的callback函数都至少有两个必须得参数:调用者对象指针,调用者参数。。否则静态的很不好处理啊。 从你不完整的描述(没有完整上下文)情况下,你这种要求我还真没见过。外部要用ui很简单, 你把对象私有的变量ui放到public里就能访问了啊
guanjiangjie 2013-05-03
  • 打赏
  • 举报
回复
没有人能帮我解决么?全局函数调用类里面的ui,帮帮忙,懂的人教教我!非常感谢。。。
guanjiangjie 2013-05-02
  • 打赏
  • 举报
回复
没有人能帮我解决下问题吗?ui这个东西我一直没搞明白!能否有人帮我写个例子,外部函数怎么去调用MainWindow里的ui的东西
guanjiangjie 2013-04-28
  • 打赏
  • 举报
回复
引用 2 楼 heksn 的回复:
最简单直接的方法就是直接调用tablewigdet
怎么个直接调用法,这个回调函数是静态成员函数,静态成员函数无法调用ui里面的东西!
  • 打赏
  • 举报
回复
最简单直接的方法就是直接调用tablewigdet
雲天之巔 2013-04-27
  • 打赏
  • 举报
回复
通过如下方法: ui->tablewigdet->成员函数;

16,175

社区成员

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

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