Grundlage-Frage

Verschiedenes zu Qt
Antworten
rafiki
Beiträge: 2
Registriert: 1. Juni 2011 17:50

Grundlage-Frage

Beitrag von rafiki »

Halle, bin ganz neu bei QT.

Ich programmiere mit QT ein GUI für eine Chat Anwendung.

Die hat eine Hauptklasse, die das Anzeigen und Eingeben von Nachrichten zuständig ist. Die Klasse hat wieder eine Private Object, der sich um die Verbindungen für das Chat kümmert. Wenn Nachricht einkommt, wird dieser Object eine public function (handleprivatenachricht() ) aus der Hauptklasse aufrufen, um dann die Nachricht in einem QTextBrowser anzueigen.

jetzt will aber für eine einkommende Nachricht aus ein anderem Chat-Partner einen neuen QTextBrowser bzw. ein neues Tab unter einem QTabWigdet erzeugen.

Ich habe versucht code von handleprivatenachricht() aus Hauptklasse anzupassen, indem ich QTextBrowser bzw. Tab und layout erzeugen und dann wie folgendes zu QTabWigdet addiere,

Code: Alles auswählen

this->findChild<QTabWidget*>("tabWidget_ChatTabs")->addTab(newTab, QString(name))
Es geht aber leider nicht, wie folgende fehlermeldungen:

Code: Alles auswählen

QObject::setParent: Cannot set parent, new parent is in a different thread
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
QObject::setParent: Cannot set parent, new parent is in a different thread
QObject::setParent: Cannot set parent, new parent is in a different thread
QPixmap: It is not safe to use pixmaps outside the GUI thread
Was ist der rechtiger Weg?
Danke Euch im Voraus!

Rafiki
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Ist dein Verbindungsobjet ein Thread? Dann solltest du von dort keine Methoden im GUI-Thread (Deine Hauptanwendung) direkt aufrufen.
Schau dir mal Signals und Slots an, die könnten dir da weiterhelfen.
rafiki
Beiträge: 2
Registriert: 1. Juni 2011 17:50

Beitrag von rafiki »

archer hat geschrieben:Ist dein Verbindungsobjet ein Thread? Dann solltest du von dort keine Methoden im GUI-Thread (Deine Hauptanwendung) direkt aufrufen.
Ich habe es doch gemacht. Und es hatte doch funktioniert, wenn ich nur z.B die Text von ein QWidget geändert hätte und keine neue QWidgets erzeuge. Aber wenn ich neue QWidget auf GUI hinzufüge dann wurde die Programm abstürtzen mit oben gezeigt Fehlermeldungen von QPixmap oder Parent-Problem.

Danke fuer die Antwort!
Antworten