QtCore.QObject.connect(self.processThread, QtCore.SIGNAL("progress(int)"),self.progressBar, QtCore.SLOT("setValue(int)"), QtCore.Qt.DirectConnection)
在这里,您明确地强制执行DirectConnection。错了!它使插槽在调用者的线程中得到处理。这意味着progressBar的GUI更新发生在进程线程中,而不是在GUI线程中。但是,仅在GUI线程中允许绘图。
将信号从一个线程连接到另一个线程的插槽是完全可以的。但是,您需要
AutoConnection(默认值,它将识别线程并使用
QueuedConnection)或
QueuedConnection。
此行应解决您的问题:
QtCore.QObject.connect(self.processThread, QtCore.SIGNAL("progress(int)"),self.progressBar, QtCore.SLOT("setValue(int)"), QtCore.Qt.QueuedConnection)
请参阅http://doc.qt.io/archives/qt-4.7/qt.html#ConnectionType-
enum。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)