2017-03-15 5 views
1

Ich habe eine Anwendung, die Aktualisierung ausführen Befehle in einer Datenbank. Ich habe eine Funktion, die diese Befehle ausführt und in dieser Funktion zeige ich dem Benutzer einige Nachrichten an.UI beim Schreiben in Text blockiertEdit

Mein Problem ist, dass die in den TextEdit geschriebenen Texte am Ende der Funktion Arbeit angezeigt werden.

Ich habe versucht, QThread zu verwenden, aber es does'nt die

this->moveToThread(&threadText); 
connect(&threadText, SIGNAL(started()), this, SLOT(writeTexte())); 
threadText.start(); 
Problem zu beheben

Hat jemand eine Idee, wie in textEdit zu schreiben, um fortzufahren und die Benutzeroberfläche nicht blockieren?

Antwort

0

In Qt Sie brauchen nie Threads in Standard-UI-Anwendungen! Das liegt daran, dass Qt eine so genannte Ereignisschleife verwendet, die Ereignisse reibungslos verarbeitet, ohne jemals zu blockieren. Wenn Sie eine Blockierung feststellen, ist das ein Zeichen dafür, dass Sie irgendwo in Ihrem Code einen Fehler haben. Für jeden Anfänger gibt es einige Fallstricke. Die official documentation zum Thema ist ziemlich gut.

Es ist schwer zu sagen, was Ihr genauer Fehler ist, weil es wenig Code zu betrachten gibt. Ich schlage vor, dass Sie mehr von Ihrem Code posten, insbesondere den naiven Ansatz, der nicht funktioniert hat, bevor Sie Threads zum Mix hinzugefügt haben.

Nebenbei bemerkt, die Verwendung von Threads in Qt ist natürlich möglich und hat ihre Verwendung, aber es kann nicht intuitiv sein. Ich habe this article gefunden, um ein wirklich guter Ausgangspunkt zu sein, um zu verstehen, wie Threads am besten in Qt verwendet werden.