【发布时间】:2013-05-06 06:15:56
【问题描述】:
我有一个多线程的 qt 应用程序。当我在 mainwindow.cpp 中做一些进程时,同时,我想从其他线程更新 mainwindow.ui。
我有 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 在工作人员中发出一个 click () 事件,并覆盖该按钮的单击处理程序以进行更新。
标签: c++ multithreading qt