私はマルチスレッドのqtアプリケーションを持っています。私がmainwindow.cppでいくつかのプロセスを実行しているとき、同時に、私はmainwindow.uiを他のスレッドから更新したい。Qt - メインウィンドウを第2のスレッドで更新しています
私は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分がある場合は、作業者からuiを更新する必要があるときはいつでも、メインウィンドウにダミーのボタンを追加します(幅と高さ0)。ワーカーでclick()イベントを発生させ、そのボタンのクリックハンドラを上書きして更新を行います。 – cristid9