Im Großen und Ganzen schon ok. Die Präfixe finde ich wirklich unschön, aber das wurde ja bereits angesprochen. Wichtiger ist allerdings noch, das man eigentlich auf die Slot-Methoden vollkommen verzichten kann, und die Interaktion stattdessen über zusätzliche Signal-Slot-Verbindungen zusammen mit partiellen Funktionen noch weiter entkoppeln und noch mehr Quelltext sparen könnte. Daneben gibt es einige Kleinigkeiten: Der Import von "Qt" ist überflüssig, ebenso wie der überschriebene Konstruktor in der Thread-Klasse, der ja eigentlich gar nichts tut.
Zudem ist es bei solchen Threads oft so, dass Minimum und insbesondere Maximum der Schritte dynamisch nach dem Start des Threads berechnet werden. Daher ist es sinnvoll, die Ergebnisse dieser Berechnung mit zwei zusätzlichen Signalen nach außen zu geben, um das Intervall des Fortschrittsbalkens entsprechend anzupassen.
Insofern: Segen erteilt
Wenn es Dir recht ist, würde ich dieses Beispiel gerne etwas überarbeiten und meiner Snippet-Sammlung hinzufügen.
Edit: Ach ja, in einer großen Applikation mit vielen Hintergrundaufgaben würde man übrigens eher QRunnable in Verbindung mit QThreadPool verbinden. Zudem ist diese Aufgabenstellung eine, in der C++ Python tatsächlich etwas voraus hat. Qt bietet mit QtConcurrent eine sehr komfortable Möglichkeit, Datensätze parallel zu verarbeiten, inklusive des ganzen Drumherums wie Abbruch der Verarbeitung oder Fortschrittsmeldungen. Allerdings setzt diese Bibliothek stark auf Templates auf, ist daher nicht so ohne weiteres anzubinden und steht in PyQt4 nicht zur Verfügung. Bei Interesse habe ich für die Anwendung von QtConcurrent in C++ auch ein Beispiel parat, aber im Prinzip ist das hier ja off-topic.