QThread 与 MainWidget 通信 问题

stivenjia stivenjia 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
设计思路: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
...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
stivenjia
Qt 21,503 成员 26,693 内容