Sono nuovo a QT e sto facendo un po 'di apprendimento.QT + Come chiamare lo slot dal codice C++ personalizzato in esecuzione in un thread diverso
Vorrei attivare uno slot che modifica un widget GUI da un thread C++ (attualmente un Qthread).
Sfortunatamente ottengo un: ASSERZIONE non riuscita a: Q_ASSERT (qApp & & qApp-> thread() == QThread :: currentThread());
Ecco il codice:
(classe thread principale +)
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);
};
Quindi io sono curioso su come aggiornare la parte gui da codice in un filo diverso
Grazie per l'aiuto
La classe mythread deve contenere la macro Q_OBJECT – CiscoIPPhone