hätte eine Frage zu QThread, und zwar will ich für jede eingehende TCP Verbindung eigenen Thread starten, funktioniert auch soweit, bis auf folgende Fehlermeldung:
Nur habe habe im Thread nirgendswo einen parent angegeben??QObject: Cannot create children for a parent that is in a different thread.
(Parent is QTcpSocket(0x3b4504), parent's thread is QThread(0x3b13d8), current thread is QThread(0x3b44f8)
Code: Alles auswählen
#ifndef TCPSOCKETTHREAD_H
#define TCPSOCKETTHREAD_H
#include <QObject>
#include <QThread>
#include <QTcpSocket>
class TcpSocketThread : public QThread
{
private:
int m_descriptor; // Native Verbindug des Sockets
QTcpSocket m_socket; // QTcpSocket;
public:
TcpSocketThread(int descriptor, QObject *parent = 0);
// Die Threadausführung
void run();
};
#endif // TCPSOCKETTHREAD_HCode: Alles auswählen
#include "TcpSocketThread.h"
TcpSocketThread::TcpSocketThread(int descriptor, QObject *parent) : QThread(parent)
{
// Native Socket- Verbindung
m_descriptor = descriptor;
}
void TcpSocketThread::run() {
// TcpSocket erstellen:
if ( ! m_socket.setSocketDescriptor(m_descriptor) ) {
qDebug() << __LINE__ << __FILE__ << "Fehlerbehandlung";
}
qDebug("waitForReadyRead");
while (m_socket.waitForReadyRead()) {
qDebug() << "Data to read...";
}
}Aber ich habe doch nirgendswo QTcpSocket einen parent angegeben??
danke!