Although it is in the documentation, QThread is not meant to be used this way (subclassing). Have a look at this: http://labs.qt.nokia.com/2010/06/17/youre-doing-it-wrong/ It helped me a lot. Also a complete stripped down example would greatly help in a case of a segfault.

On 06/07/2012 09:59 AM, William Dias wrote:
Hi,

I have a subclass of QThread which uploads pictures to a webserver. For each new picture created in the main thread, the program spawns a new thread to handle the job. I've override the __init__ method to be able to pass some parameters to the thread object, as you can see bellow.

    class PhotoConnection(QThread):
    photoStatus = Signal(str, str)

    def __init__(self, tags, filename, parent=None):
    QThread.__init__(self, parent)
    self.tags = tags
    self.filename = filename

    def run(self):
    status = sendPhoto(self.tags, self.filename)
    self.photoStatus.emit(self.filename, status)


In the GUI thread, the method responsible dor creating the threads is the following:

    def sendPhoto(self):
    photoConnection = PhotoConnection(self.tags_to_string,
    self.filename, self)
    photoConnection.photoStatus.connect(self.photoStatus)
    photoConnection.finished.connect(self.threadFinished)
    photoConnection.start()


In the PhotoConnection, if I don't set the parent of my Qthread object to self (for example, if I set to None) or if I don't override the __init__ method and create another method to pass the arguments, when the thread finishes the execution I got a segfault.
Why is this happening? Can you help me?

Thanks,


_______________________________________________
PySide mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/pyside


--
Sebastian Elsner    -    pipeline td   -   r i s e |  fx

t:  +49 30 20180300                 [email protected]
                                          www.risefx.com

r i s e |  fx  GmbH
Schlesische Strasse 28 Aufgang B, 10997 Berlin
Geschäftsführer: Sven Pannicke, Robert Pinnow

Handelsregister Berlin HRB 106667 B

_______________________________________________
PySide mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/pyside

Reply via email to