QT + Как вызвать слот из пользовательского кода C ++, запущенного в другом потоке

Я новичок в QT, и я немного учусь.

Я хотел бы вызвать слот, который изменяет виджет GUI из потока C ++ (в настоящее время Qthread).

К сожалению, я получаю: ASSERTION не удалось в: Q_ASSERT (qApp & amp; qApp- & gt; thread () == QThread :: currentThread ());

вот некоторый код:

(ГЛАВНЫЙ + класс темы)

   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();
    }

Окно:

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);
};

Поэтому мне интересно, как обновить часть графического интерфейса с помощью кода в другом потоке.

Спасибо за помощь

Ответы на вопрос(5)

Ваш ответ на вопрос