[gelöst]QThread in Qt4.4
Verfasst: 30. Mai 2008 19:04
Guten Abend.
Ich musste aufgrund eines Bugs in der TableView in Verbindung mit Sortierung von QT4.3 auf QT4.4 umsteigen. Bisher hat auch alles sehr gut
funktioniert, bis ich meinen Thread-Teil nochmal testen wollte. Ploetzlich
kann ich auf Objekte welche innerhalb der run() erstellt worden sind, vom Thread aus nicht mehr zugreifen.
Hier ein Beipsiel
mythread.h:
main.cpp:
Hier die Ausgaben:
head of run
about to start event loop
QObject::startTimer: timers cannot be started from another thread
Timer restarted
Kann das vielleicht mal jemand bei sich testen, ob das an meiner Version liegt, oder ob ich vollkommen auf dem Schlauch steh...
waere echt klasse
Col
Ich musste aufgrund eines Bugs in der TableView in Verbindung mit Sortierung von QT4.3 auf QT4.4 umsteigen. Bisher hat auch alles sehr gut
funktioniert, bis ich meinen Thread-Teil nochmal testen wollte. Ploetzlich
kann ich auf Objekte welche innerhalb der run() erstellt worden sind, vom Thread aus nicht mehr zugreifen.
Hier ein Beipsiel
mythread.h:
Code: Alles auswählen
#ifndef MYTHREAD_H
#define MYTHREAD_H
#include <QThread>
#include <QTimer>
#include <QDebug>
class MyThread : public QThread
{
Q_OBJECT
public:
MyThread(QObject *parent = 0) : QThread(parent){}
~MyThread(){ delete timer;}
void run(void)
{
qDebug() << "head of run";
timer = new QTimer;
timer->setSingleShot(true);
timer->setInterval(1000);
connect( timer, SIGNAL(timeout()), this, SLOT(restartTimer()));
timer->start();
qDebug() << "about to start event loop";
exec();
}
private slots:
void restartTimer(void)
{
timer->start();
qDebug() << "Timer restarted";
}
private:
QTimer *timer;
};
#endif //MYTHREAD_H
Code: Alles auswählen
#include <QtGui>
#include "mythread.h"
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
MyThread thread;
thread.start();
return app.exec();
}
head of run
about to start event loop
QObject::startTimer: timers cannot be started from another thread
Timer restarted
Kann das vielleicht mal jemand bei sich testen, ob das an meiner Version liegt, oder ob ich vollkommen auf dem Schlauch steh...
waere echt klasse
Col