2010-12-30 12 views
2

Ist es möglich, QApplication :: processEvents() im Ereignishandler aufzurufen, wo ein langer Prozess vorliegt. Mein Programm endet mit Segfault. Mein Code ist so etwas wie dieses:Qt QApplication :: processEvents() im benutzerdefinierten Ereignishandler

void MyApplication::customEvent(QEvent* event) 
{ 
    if(event->type() == UserEventCustom) 
    { 
    for(int i = 0; i < 99999; ++i) 
    { 
     QApplication::processEvents(); 
     doSomething(); 
    } 

    event->accept(); 
    } 
} 
+0

Sie sollten ein vollständiges Beispiel veröffentlichen, dieser Teil des Codes zeigt kein Problem. – ismail

+0

Haben Sie versucht, den Stack-Trace bei der Segmentierung zu untersuchen? –

+0

Ja, es gibt viele viele QT-Anrufe – Yury

Antwort

0

Ich vermute, dass Ton van den Heuvel (aus den Kommentaren) richtig ist, dass Sie einen Stapelüberlauf sehen.

Bei meiner Firma haben wir es jedoch am besten gefunden, processEvents() zu vermeiden. Unsere Erfahrung hat gezeigt, dass processEvents() Abstürze verursacht und wir versuchen, seine Verwendung zu vermeiden. Ich würde mich fragen, ob Sie Ihren Code umgestalten könnten, um auf den Prozess processEvents() zu verzichten. Sie könnten beispielsweise einen Thread zur Bearbeitung erstellen.

Verwandte Themen