PyQt4 und Multithreading

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
maxip
User
Beiträge: 61
Registriert: Dienstag 11. März 2008, 09:43

Montag 9. Juni 2008, 13:38

Wenn ich z.B. eine Application habe, dann einen Dialog anzeige, der einen Thread startet und dieser Thread den Dialog (oder sonstige GUI-Elemente) aktualisieren soll, ist es dann sinnvoll und "Threadsafe" dies ueber Signale und Slots zu machen? Kuemmert sich QT um das Synchronisieren (damit nicht 2 Threads versuchen die GUI zu steuern)

in wxWidgets gibt es ja wx.CallAfter, sowas braeuchte ich ja dann hier nicht oder?

Ich mochte also ein Signal definieren, bei dessen auftreten eine Funktion aufgerufen wird die die GUI aktualisiert.

Wenn nicht, wie macht man das in QT,dass Threads die GUI aktualisieren koennen?

Ein link zur entsprechenden Funktion reicht mir vollkommen (z.B. hier: http://doc.trolltech.com/4.4/index.html )

Danke und cu
lunar

Montag 16. Juni 2008, 14:35

maxip hat geschrieben:Wenn ich z.B. eine Application habe, dann einen Dialog anzeige, der einen Thread startet und dieser Thread den Dialog (oder sonstige GUI-Elemente) aktualisieren soll, ist es dann sinnvoll und "Threadsafe" dies ueber Signale und Slots zu machen? Kuemmert sich QT um das Synchronisieren (damit nicht 2 Threads versuchen die GUI zu steuern)
Ja, Signale und Slots sind Thread-safe. Bei Verbindungen über verschiedene Threads garantiert Qt, dass der Slot immer in dem Thread aufgerufen wird, in dem das Objekt "lebt."

Allerdings braucht man Threads nicht häufig, Qt hat bereits viele Klassen für asynchrone Aufgaben.
Antworten