stivenjia 2010年02月22日
QThread 与 MainWidget 通信 问题
设计思路: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
...全文
54 点赞 收藏 1
写回复
1 条回复

还没有回复,快来抢沙发~

发动态
发帖子
Qt
创建于2009-11-04

1.0w+

社区成员

2.5w+

社区内容

Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区公告
暂无公告