[GELÖST] Qt error: Cannot send events to

Alles rund um die Programmierung mit Qt
Antworten
loki
Beiträge: 10
Registriert: 26. August 2007 11:42

[GELÖST] Qt error: Cannot send events to

Beitrag von loki »

Hallo allerseits,

ich habe bereits Dr. Google befragt und auch dieses Forum durchsucht, konnte aber leider keinen Hinweis auf diesen Fehler finden.

Error Link

Ich arbeite nicht mit Threads. Da ich Echtzeitdaten in einem QTextEdit darstellen möchte und diese nach bestimmten Abständen immer wieder neu rein kommen, habe ich mir folgendes überlegt:

Zuerst baue ich mir ein Fenster welches ein Widget enthält. In diesem Widget habe ich ein TabWidget und dieses hält die verschiedenen Tabs (die geöffnent und geschlossen werden können), in denen die Information nach bestimmten Kriterien gefiltert werden können. Hierfür verwende ich eine QStringList.

Wenn ich nun neue Informationen bekomme, dann lösche ich den vorhandenen Text mit QTextEdit::clear() und dannach füge ich mit QTextEdit::append() den neuen Text bzw. den erweiterten wieder ein.
Wenn ich das clear() nicht mache, habe ich immer den alten Eintrag + plus den neuen Untereinander (wenn der nächste kommt, selbes nochmal usw..).

Mein Problem liegt im QTextEdit::clear()! Denn wenn ich diese Methode nicht aufrufe, dann kann ich das Programm auch ohne Probleme ausführen, nur wird eben der Text doppelt, dann dreifach ... dargestellt. Ich brauche aber die "alten" Informationen, da ich ja zur Laufzeit die Filterkriterien ändern können möchte. Deshalb kann ich die "alten" Informationen auch nicht löschen und möchte ein clear() oder was vergleichbares machen.
Ich habe es auch schon mit QTextEdit::setPlainText() versucht, aber leider auch kein Erfolg.

Was habe ich sonst für Möglichkeiten, bzw. wie kann ich das Problem lösen, oder ist das ein von Qt intern noch nicht gelöstes Problem?

Bin für jede Hilfe dankbar!


Gruß
Zuletzt geändert von loki am 18. September 2007 15:41, insgesamt 2-mal geändert.
loki
Beiträge: 10
Registriert: 26. August 2007 11:42

gelöst ?

Beitrag von loki »

ich bin mir nicht sicher, aber es liegt warscheinlich daran, daß Qt intern keine threadsicherheit garantiert.

warum, dann aber die ::append() methode funktioniert, jedoch die ::clear() methode nicht, verstehe ich nicht ganz.

trotzdem danke fürs lesen... ;-)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich dachte Du hättest nur den Haupthtread?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
loki
Beiträge: 10
Registriert: 26. August 2007 11:42

Beitrag von loki »

Hi,

danke für deine Antwort!

Naja, das ist doch etwas schwieriger zu erklären, aber soviel kann ich auf die schnelle sagen:

Es gibt eine Anwendung, die Single-Threaded ist. Diese schickt eben die Informationen. Ich hingegen verwende eigentlich keine Threads, deshalb hab ich daran auch nicht gleich gedacht.

Das hatte ich nicht berücksichtigt und deshalb hab ich dann das Posting auch gleich wieder revidiert.

LG
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich glaube das musst du nochmal genauer erklären. Sobald es mehrere Threads hast musst Du dran denken dass nur der Hauptthread auf die GUI zeichnen kann
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
loki
Beiträge: 10
Registriert: 26. August 2007 11:42

Beitrag von loki »

Ich weiß jetzt nicht wie ich das genau erklären soll...

Es gibt einen Server und der ist SingleThreaded. Dieser schickt in zeitlichen Abständen Serverausgaben. Die GUI soll diese Infos darstellen darstellen.

Ich hab bis jetzt ganz und gar nicht über Threads nachgedacht und deshalb bekam ich auch diese Fehlermeldung.

Geht es auch, wenn ich mir mit QSemaphore die Zeit sichere, in der dann der Qt Thread auf die GUI zeichnen kann?

Ich bin etwas neu in Bezug Threads, GUI ..., aber ich arbeite hart daran ;-)


LG
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Nein, Du musst immer die Anweisungen zum Zeichnen auf dem Bildschirm an den Hauptthread deiner Anwendung schicken. Am besten per Signals/Slots
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
loki
Beiträge: 10
Registriert: 26. August 2007 11:42

Beitrag von loki »

Danke, ich habs mit Signals und Slots nun gelöst - Bestens!
Antworten