以下是代码的一部分:
let group = groupItemBy(cart, 'id');
console.log(group.length); // should be greater than 1 for multiple indexes
它给了我这个错误信息: " QObject:无法为不同线程中的父级创建子级。 (Parent是QTextDocument(0xd08b98),父线程是QThread(0xc6f620),当前线程是QThread(0x4a2c810)"
我该如何解决?
答案 0 :(得分:0)
鉴于您的self.textField
是QTextEdit
,每当您调用其append
方法时,QTextCursor
都会被创建为QTextEdit
底层{的{child} {1}}对象。
这有什么问题? Qt不会允许任何QObject派生类让孩子“生活”在与父母一个不同的线程中
怎么解决?既然你已经在使用它们,那就让我们使用信号和插槽。
首先定义一个这样的信号:
QTextDocument
和相应的插槽:
appendText = pyqtSignal(str)
连接它们:
def appendToTextField(self, text):
self.textField.append(text)
然后代替:
self.appendText.connect(self.appendToTextField)
做的:
for i in pattern:
self.textField.append(i)
for i in pattern:
self.appendText.emit(i)
插槽应该在正确的线程中运行,appendToTextField
底层QTextEdit
生存的那个,因此Qt会将新的子节点添加到其中。