QThread 与 MainWidget 通信 问题

stivenjia 2010-02-22 07:01:31
设计思路:MainWidget 负责 GUI 更新,BackService 负责后台数据处理,当BackService处理完毕后发出Signal到MainWidget。
MainWIdget收到该Signal执行GUI更新操作,现在的问题是,BackService的Signal正常发出,MainWidget也能执行了Slot但是在执行Slot的时候QT Creator提示

链接代码如下:
MainWidget 构造部分(m_lpBackServicePtr 为 BackService ):
connect(m_lpBackServicePtr,SIGNAL(UpdateWniResGui(QString,QVector<QString>*,CResource*)),this,
SLOT(OnUpdateWniResList(QString,QVector<QString>*,CResource*)),Qt::BlockingQueuedConnection);

在执行OnUpdateWniResList后发生:
异常提示


void MainWindow::OnUpdateWniResList(const QString &spTrace,QVector<QString> *lpvtList,CResource *lpRes)
{
QString szTmp;
QDir tgDirTmp;
DWORD dwRetVal = 0;
CUsualParam tgUsual = m_tgOptionsParam.GetUsual();
if( m_qMainBrowser.document()->lineCount() == MAX_ROWS*10 ) m_qMainBrowser.clear();
m_qMainBrowser.insertPlainText(spTrace);
for(int nIndex = 0;nIndex < lpvtList->count();nIndex++)
{
tgDirTmp = lpRes->GetLocalPath(); // 出现问题行
szTmp.sprintf("%s.jc",lpvtList->at(nIndex) );
if( (!tgDirTmp.exists(lpvtList->at(nIndex))) && (!tgDirTmp.exists(szTmp)) )
{
QTableWidgetItem *lpItem =NULL;
dwRetVal = AppendRow(lpvtList->at(nIndex),0,"Ready",tgDirTmp.currentPath());
JTransmissionItem *lpItemService = new
JTransmissionItem(this,m_tgOptionsParam,*lpRes,lpvtList->at(nIndex),
m_qMainTable.item(dwRetVal,1));
m_tgThreadPool.start(lpItemService);
}
}
}

请问怎么解决这个问题:QT 4.6.1 OS Windows7
...全文
148 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxcnfly 2010-02-22
  • 打赏
  • 举报
回复
Qt的问题学习了,帮顶了……。。。

16,818

社区成员

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

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