MyThread.cpp 및 .h에 QThread가 정의되어 있습니다. 거기에 개인 QTcpSocket 있습니다.다른 스레드에있는 부모에 대해 자식을 만들 수 없습니다.
한편class MyThread: public QThread {
Q_OBJECT
public:
MyThread();
virtual ~MyThread();
public slots:
void reconnect();
signals:
protected:
void run(void);
private:
QTcpSocket *socket;
};
void MyThread::run(void) {
bool connected = false;
connected = prepareSocket(QString::fromLatin1((Global::directionIPSerialServer).toLocal8Bit().data()), 8008, socket);
}
, 나는 기능 클래스에 정의되지 않은 Functions.cpp 및 .H에 정의 된 함수의 집합,하지만 네임 스페이스를 가지고있다. 내가 틀렸다면
bool Functions::prepareSocket(QString address, int port, QTcpSocket *socket) {
socket->connectToHost(address, port);
if(!socket->waitForConnected(Global::maxTimueToConnectByTCP)){
qDebug()<<"Error: "<<socket->errorString();
return false;
}
return true;
}
그럼,이 호스트로 MyThread의 QTcpSocket를 연결하는 기능으로 함수를 호출 할 때, 나는 내가 전화 해요 이후, 나는 동일한 스레드에서 오전 랬있어, 날 수정 함수는 내가 작성한 스레드에서 가져온 것이고 다른 스레드는 아닙니다.
그럼에도 불구하고 socket-> connectToHost에서 QObject : 다른 스레드에있는 부모에 대해 자식을 만들 수 없습니다. 두 번.
왜 그럴까요? 뭐가 문제 야?
어디에서 소켓을 만드십니까? – Nick