QTimer in einem Qthread
Verfasst: 26. März 2010 11:38
Hallo NG,
folgendes Problem, ich habe einen QThread der unter gewissen Umständen ein Qtimer startet, so dass ein entsprechender Slot regelmäßig aufgerufen werden soll. Das Problem ist, dass ich dazu eine eigene Eventloop für den Thread starten müsste (exec()). Bei meinem Thread handelt es sich jedoch um eine while-schleife die permanent abgearbeitet werden muss (Siehe Code Schnippsel).
Das Problem ist, dass die Methode slotMotorCur1 nicht aufgerufen wird, da in meiner Run Methode keine eigene Eventloop gestartet wird. Dies ist aber nicht möglich, da ich die schleife ja immer wieder durchlaufen möchte/muss um meine Queue abzuarbeiten.
Hat jemand ne Idee wie ich den QTimer in meinem Thread verwenden kann?
Grüße André
folgendes Problem, ich habe einen QThread der unter gewissen Umständen ein Qtimer startet, so dass ein entsprechender Slot regelmäßig aufgerufen werden soll. Das Problem ist, dass ich dazu eine eigene Eventloop für den Thread starten müsste (exec()). Bei meinem Thread handelt es sich jedoch um eine while-schleife die permanent abgearbeitet werden muss (Siehe Code Schnippsel).
Code: Alles auswählen
void ThreadClass::run()
{
QTimer* o1_curTimer = new QTimer();
while(condition)
{
// hier wird eine Queue geparts die regelmäßig befüllt wird
// und dann unter bestimmten umständen wird dann folgender Code ausgeführt ( der Timer wird nicht in jedem Schleifen durchlaiuf gestartet:
if (NULL != o1_curTimer)
{
connect( o1_curTimer, SIGNAL(timeout()),
this, SLOT(slotMotorCur1()) );
int zahl = 10;
o1_curTimer->start(zahl);
}
...
msleep(2);
...
}// end while
if (NULL!=o1_curTimer)
{
delete(o1_curTimer);
o1_curTimer = NULL;
}
}// end run
void ThreadClass::slotMotorCur1()
{
qDebug() << "Hier!";
}
Hat jemand ne Idee wie ich den QTimer in meinem Thread verwenden kann?
Grüße André