我有一個多線程的qt應用程序。當我在mainwindow.cpp中進行一些進程時,同時我想從其他線程更新mainwindow.ui。Qt - 用第二個線程更新主窗口
我有mythread.h
#ifndef MYTHREAD_H
#define MYTHREAD_H
#include <QThread>
#include "mainwindow.h"
class mythread : public QThread
{
public:
void run();
mythread(MainWindow* ana);
MainWindow* ana;
private:
};
#endif // MYTHREAD_H
mythread.cpp
mythread::mythread(MainWindow* a)
{
cout << "thread created" << endl;
ana = a;
}
void mythread::run()
{
QPixmap i1 (":/notes/pic/4mdodiyez.jpg");
QLabel *label = new QLabel();
label->setPixmap(i1);
ana->ui->horizontalLayout_4->addWidget(label);
}
但問題是,我不能達到ana->ui->horizontalLayout_4->addWidget(label);
我該怎麼辦呢?
如果你和我一樣,而且你有10分鐘的截止日期,這裏是一個更加黑客的解決方案:在主窗口中添加一個虛擬按鈕(寬度和高度爲0),每當你需要從工作人員更新UI時在worker中發出click()事件並覆蓋該按鈕的click處理程序以執行更新。 – cristid9 2017-02-15 18:00:38