• 3709阅读
  • 5回复

[提问]调用动态库的问题 [复制链接]

上一主题 下一主题
离线lazijiding
 

只看楼主 正序阅读 楼主  发表于: 2011-10-31
在mainwindow里面调用动态库,动态库有一个回调函数,就是动态库收到数据以后通过回调函数把数据传给我,这个回调函数要怎么调用mainwindow里面的函数,让回调函数一接收到数据,我就可以立刻处理?

  1. void  __stdcall  display(char *msg, int len)
  2. {    
  3.   int i;    
  4.   QString str;    
  5.   str="";        
  6.   for(i =0; i<len; ++i)        
  7.      {            
  8.           QByteArray ba;          
  9.           ba.resize(len);            
  10.           ba[i]=msg[i];            
  11.           str=str+QString::number(ba[i], 16).toUpper()+" ";        
  12.      }        
  13.      //ui->TextEdit->setText(str);        
  14.      //QMessageBox msgBox;        
  15.      //msgBox.setText(str);        
  16.      //msgBox.exec();        
  17.      return;
  18. }





加入 ui->TextEdit->setText(str);    
这句时 报错:错误:'ui' was not declared in this scope
加入msbBox这3行时候,可以编译通过,但是运行时出错,ASSERT failure in QWidget: "Widgets must be created in the GUI thread.", file kernel\qwidget.cpp, line 1264,上网搜了一下,好像是说  所有关于UI的操作必须在主线程进行,我对这方面不太懂
请问该怎么做才能调用mainwindow里面的函数?谢谢!




离线lazijiding

只看该作者 5楼 发表于: 2011-11-14
我还是没弄好,postEvent怎么用啊,能不能给个例子啊 谢谢!QT的说明文档看不明白
离线ninsun

只看该作者 4楼 发表于: 2011-10-31
你其实可以用个全局变量把mainwindow的指针拿过来……不过的确界面上的操作最好不要再其他线程里做……

离线lazijiding

只看该作者 3楼 发表于: 2011-10-31
能不能说的详细一点 谢谢了
离线zhy282289
只看该作者 2楼 发表于: 2011-10-31
界面操作都是在主线程中执行
一般会把回调函数中的数据传回主线程中.再在主线程中处理你的数据
可以用信号朝,或者postEvent
选择你合适的就行了
为什么我脸这么胖~
离线zhy282289
只看该作者 1楼 发表于: 2011-10-31
界面操作都是在主线程中执行
一般会把回调函数中的数据传回主线程中.再在主线程中处理你的数据
可以用信号朝,或者postEvent
选择你合适的就行了
为什么我脸这么胖~
快速回复
限100 字节
 
上一个 下一个