3 from __future__ import with_statement
4 from __future__ import division
9 sys.path.insert(0,"./src")
10 from util import qt_compat
11 from util import qore_utils
14 class QThread44(qt_compat.QtCore.QThread):
16 This is to imitate QThread in Qt 4.4+ for when running on older version
17 See http://labs.trolltech.com/blogs/2010/06/17/youre-doing-it-wrong
18 (On Lucid I have Qt 4.7 and this is still an issue)
21 def __init__(self, parent = None):
22 qt_compat.QtCore.QThread.__init__(self, parent)
28 class Producer(qt_compat.QtCore.QObject):
30 data = qt_compat.Signal(int)
31 done = qt_compat.Signal()
34 qt_compat.QtCore.QObject.__init__(self)
38 print "Starting producer"
45 class Consumer(qt_compat.QtCore.QObject):
48 qt_compat.QtCore.QObject.__init__(self)
52 print "Starting consumer"
59 def print_data(self, i):
63 if __name__ == "__main__":
64 app = qt_compat.QtCore.QCoreApplication([])
66 producerThread = qore_utils.QThread44()
68 producer.moveToThread(producerThread)
69 producerThread.started.connect(producer.process)
71 consumerThread = qore_utils.QThread44()
73 consumer.moveToThread(consumerThread)
74 consumerThread.started.connect(consumer.process)
76 producer.data.connect(consumer.print_data)
77 producer.done.connect(consumer.print_done)
85 producer.done.connect(producer_done)
97 producerThread.finished.connect(thread_done)
98 consumerThread.finished.connect(thread_done)
100 producerThread.start()
101 consumerThread.start()
102 print "Status", app.exec_()