am besten schildere ich mein Problem/Vorhaben direkt an einem Beispiel-Code:
Code: Alles auswählen
class MyClass
{
Q_OBJECT
private:
QTimer *inittimer;
bool initsuccess;
public:
void init();
public slots:
void initTCB();
};
MyClass::MyClass()
{
initsuccess = false;
inittimer = new QTimer;
connect(inittimer, SIGNAL(timeout()), this, SLOT(initTCB()));
}
bool MyClass::init()
{
inittimer->start(5); // Timer starten: 5ms-Intervall
// AN DIESER STELLE SOLL GEWARTET WERDEN, BIS DER TIMER ANGEHALTEN WURDE
if (initsuccess)
return true;
else
return false;
}
void MyClass::initTCB()
{
// Hier erfolgt Initialisierung
...
initsucces = ... ; //
inittimer->stop(); // Timer anhalten
}
Am Timer führt kein weg vorbei, der Initialisierungsprozess sehr komplex und es ist nicht vorhersagbar, wie lange der Timer laufen muss bzw. wie oft initTCB() aufgerufen werden muss (daher wird der Timer auch von initTCB() selbst angehalten).
Ich habe noch nicht allzu viel Erfahrung mit C++ bzw. Qt. Gibts eine Möglichkeit, das Ganze einfach mit einem Signal zu lösen ? Hab' leider noch keine Möglichkeit gefunden, auf ein bestimmtes Signal zu warten !?
Habe auch schon überlegt, dass Ganze mit ein Event anzugehen, soweit ich das sehe wird aber beim Stop des Timers zumindest schon mal kein Standard-Event ausgelöst.
Mein dritter Gedanke wäre dann noch, das Ganze in einen Thread auszulagern...
Wie würdet ihr das lösen ? Bin für jede Anregung dankbar...
Gruß,
Frank