Seite 1 von 1

PyQt4 und Multithreading

Verfasst: Montag 9. Juni 2008, 13:38
von maxip
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

Re: PyQt4 und Multithreading

Verfasst: Montag 16. Juni 2008, 14:35
von lunar
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.