У меня есть простая программа чата сервер-клиент, в которой я использую потоки для получения данных с сервера в фоновом режиме. Проблема в том, что когда клиент получает сообщение, необходимо создать новую вкладку для чата. Но я получаю данные в потоке, чтобы я мог проверить данные и создать их в потоке. За исключением того, что я не могу создать виджет и установить его родительское окно, потому что мое окно находится в главном потоке. Так это выглядит так:
class MainWindow(QWidget):
...
def addChatTab(self, nick, target, parent):
tab = ChatTab(target)
tab.setParent(parent) #where I get the eror
self.chatTabWidget.addTab(tab, nick)
self.chatTabs[nick] = tab
class ServerManagement():
...
def clientLoop(self): #runs in a different thread
...
if sender == settingsManager.getUserNick():
targetTab = receiver
else:
targetTab = sender
if targetTab in mainWindow.chatTabs.keys(): #if tab is already there
mainWindow.getChatTab(targetTab).write(message)
else:
mainWindow.addChatTab(targetTab, sender, mainWindow) #create and add it to QTabWidget
mainWindow.getChatTab(targetTab).write(message)
Ошибка:
QObject::setParent: Cannot set parent, new parent is in a different thread
Я понимаю, как и почему это происходит, но у меня просто нет решения для этого. Кто-нибудь может мне помочь?
Заранее спасибо ...