Tôi mới sử dụng QT và tôi đang học một số.QT + Cách gọi khe từ mã C++ tùy chỉnh đang chạy trong một luồng khác
Tôi muốn kích hoạt một khe có thể sửa đổi tiện ích GUI từ chuỗi C++ (Hiện tại là Qthread).
Đáng tiếc là tôi nhận được: ASSERTION không thành công tại: Q_ASSERT (qApp & & qApp-> thread() == QThread :: currentThread());
đây là một số mã:
(MAIN + lớp Thread)
class mythread : public QThread
{
public:
mythread(mywindow* win){this->w = win;};
mywindow* w;
void run()
{
w->ui.textEdit->append("Hello"); //<--ASSERT FAIL
//I have also try to call a slots within mywindow which also fail.
};
};
int main(int argc, char *argv[])
{
QApplication* a = new QApplication(argc, argv);
mywindow* w = new mywindow();
w->show();
mythread* thr = new mythread(w);
thr->start();
return a->exec();
}
Window:
class mywindow : public QMainWindow
{
Q_OBJECT
public:
mywindow (QWidget *parent = 0, Qt::WFlags flags = 0);
~mywindow();
Ui::mywindow ui;
private:
public slots:
void newLog(QString &log);
};
Vì vậy, tôi tò mò về cách cập nhật phần gui bởi mã trong một chủ đề khác nhau.
Cảm ơn bạn đã trợ giúp
Lớp huyền thoại cần chứa macro Q_OBJECT – CiscoIPPhone