首页| 论坛| 消息

标题:关于多线程处理多个进度插入QTableWidget的疑问
作者:lwei24
日期:2021-08-09 14:39
内容:

各位大佬,请大家指点一下:如下代码,在Qt平台下,多线程通过数组的方式创建,每个多线程都有自己的工作线程,每个工作线程都有一个对应的进度条,以上代码中出现的问题是多个进度条值可能会错乱,例如
当有两个进度条时,进度条1可能从1%递增到100%后再降到1%,最后再递增到100%(或者递增过程中出现失败),进度条2从1%递增到100%,正常显示。
为什么每个工作线程对应一个进度条,某个进度条的值还是会递增两次或多次呢?后来,我检查了代码,在每次处理进度条达到100%后,退出该线程,结果,还是会接受到工作线程的信号,导致进度条重新从1%计算开始。是不是由于每个工作线程的信号都是一样的影响了呢?有什么办法解决这个问题吗?或者有什么更好的办法实现多线程处理多个进度条值而不会错乱吗?欢迎各位大佬赐教,小弟不胜感激!!!!
/*****************************/
//Worker类
class Worker : public QObject
{
Q_OBJECT
public:
Worker(QTableWidgetItem *pItem0, QProgressBar *pProgressBar);

public slots:
void slotStartWork();
signals:
void sigProgressValue(QProgressBar *pProgressBar, int nCode);
void sigStartWork();
private:
QTableWidgetItem *m_item0;
QProgressBar *m_progressBar;
};
Worker::Worker(QTableWidgetItem *pItem0, QProgressBar *pProgressBar)
{
m_item0 = pItem0;
m_progressBar = pProgressBar;
}
void Worker::slotStartWork()
{
//dosomething
if(true)
{
emit sigProgressValue(m_progressBar, i)//成功,返回进度条值,从1递增100.
}
else
{
emit sigProgressValue(m_progressBar, -1);//失败
}
}
/*****************************/
//CustomTableWidget类
class CustomTableWidget : public QTableWidget
{
&nb ..

回复 发表
主题 版块