0

refreshLogDisplay()在 MainWindow 类中调用了一个函数,它可以完成很多 UI 工作。里面的代码是这样的:

ui->tablewidget->setRowCount(100);
// ...     

因此该函数处理了 MainWindow 类的许多受保护属性。但我想将该函数移动到另一个 QThread。在那个 QThread 中,我想要一个 while 循环每秒调用 500 次“refreshLogDisplay”。每秒 500 次非常重要,我不希望任何计时器这样做,因为计时器太慢了。

我只知道如何实现一个继承QThread的子类,它不能访问ui->tablewidget东西。有一个QObject::moveToThread()函数,但它似乎没有帮助。

有什么好的建议吗?

4

1 回答 1

0

您无法从线程控制 UI,您必须构建插槽并将它们连接到线程中的信号。像这样 :

void Whatever::increment(){i+=2;emit incremental();} 
void Default::Progress(){ui->tablewidget->setRowCount(i);}
void main(){ //do thread
connect(Whatever,SIGNAL(increamental()),this,SLOT(Progress()));}
于 2016-03-22T08:42:19.100 回答