QT multithreading
-
hallo Leute,
ich will in meinem Hauptfenster mehrere Diagramme zeichnen. In denen unsortierte Zahlen dargestellt werden. Nun will ich die in einzelne threads packen damit ich im Hauptfenster trotzdem noch auf eingaben reagieren kann. Jetzt hab ich das ganze in einen thread gepackt nur erfährt das Hauptfenster erst wieder ein update, wenn der thread beendet ist. Aber das soll ja wie ne Animation aussehen. Ich ruf auch immer die repaint Methode auf wenn nach jedem Iterationsschritt. Kann mir jmd. sagen wo da der Fehler steckt?
Gruß maurice
-
Hast du dir schon die Threadshowtos genau durchgelesen?
http://doc.trolltech.com/4.1/threads.html für Qt4
oder
http://doc.trolltech.com/3.3/threads.html für Qt3Ansonsten, wie wäre es mit einem kleinen Beispielprogramm?
-
Ponto schrieb:
Ansonsten, wie wäre es mit einem kleinen Beispielprogramm?
wie meinst du das?
-
mosta schrieb:
Ponto schrieb:
Ansonsten, wie wäre es mit einem kleinen Beispielprogramm?
wie meinst du das?
Ein kleines Programm, bei dem man den Fehler sieht.
Ich hab mit Qt4 und Threads noch nichts gemacht, aber bei Qt3 gab es nur einen GUI Thread und eine Eventloop. Da hat man ein neues Bild berechnet und in einen gemeinsamen Puffer abgelegt. Dann hat man via postEvent ein Event an das verwantwortliche Widget geschickt, so dass dieses sich mit den Daten aus dem Puffer neu zeichnen konnte.
-
hm,da muss ich nochmal nachkucken du meinst das mandelbrot bsp.?
-
also mit den beispielen komm ich nicht weiter, da ich in jedem thread nen eigenen Datensatz habe und jetzt nicht weiß auf welchen Event ich das jetzt neu zeichnen soll. Versucht hab ich es ja indem ich im thread ein repaint versuche aber die events kommen nicht im hauptfenster an also wie kann ich vom child thread im parent thread events auslösen?
-
mosta schrieb:
also mit den beispielen komm ich nicht weiter, da ich in jedem thread nen eigenen Datensatz habe und jetzt nicht weiß auf welchen Event ich das jetzt neu zeichnen soll. Versucht hab ich es ja indem ich im thread ein repaint versuche aber die events kommen nicht im hauptfenster an also wie kann ich vom child thread im parent thread events auslösen?
Wie gesagt, über QApplication::postEvent()
-
oh, ich hab den fehler gefunden. Ich sollte den main thread nicht mit 100% belasten und mich dann wundern warum der nicht mehr die repaint Events von meinem cleint thread mitkriegt
danke für die hilfe mosta