2015-06-09 5 views
0

Я использую Qt 5.4 и пытаюсь возобновить прием новых соединений, когда выдается «отключенный» сигнал от моего QTcpSocket. Так что я писал в .h и .cpp файл, соответственно:Использование QPointer и QObject :: connect с C++ 11

QPointer<QTcpServer> tcpServer; // in .h file 

connect(tcpSocket, &QAbstractSocket::disconnected, [=](){ 
     tcpServer->resumeAccepting(); // in .cpp file 
    }); 

Как вы можете видеть, я использую QPointer класс для tcpSocket. С приведенными выше кодами я не могу создать свою программу и получить ошибку «отсутствие соответствия для вызова ...», в то время как у меня нет проблем в случае определения tcpSocket без QPointer.

Как решить эту проблему?

ответ

2

Было бы разумнее сделать прямое соединение.

connect(tcpSocket, &QAbstractSocket::disconnected, 
     tcpServer, &QTcpServer::resumeAccepting); 

Пожалуйста, обратите внимание, что nextPendingConnection имеет родительский набор для QTcpServer, так что вы можете также получить доступ к серверу с помощью:

auto tcpServer = qobject_cast<QTcpServer *>(sender()->parent()); 
+1

Уважаемый @Marker R, соединяя таким образом требует как TcpSocket и TCPServer быть простым указателем а не Qpointer. поэтому в этом случае он не работает. – Reza

+0

@thung Спасибо за ваш комментарий. Меня устраивает. Сначала напишите как ответ на этот вопрос другим. Вторая официальная помощь qt гласит, что: «Защищенный указатель, QPointer , ведет себя как обычный указатель C++ T *, за исключением того, что при уничтожении объекта ссылки он автоматически устанавливается в 0 (в отличие от обычных указателей C++, которые становятся« оборванными указателями ») в таких случаях). », и у меня есть много соединений с сигналом/слотом, которые не использовали QPointer :: data для них, и они работают нормально (по крайней мере, я думаю: - |). Так и я должен их исправить? – Reza

+0

@Reza Вы уверены, что не использовали старый синтаксис соединения для рабочих соединений? Например, 'connect (object, SIGNAL (objectSignal()), object, SLOT (objectSlot()));' – thuga

 Смежные вопросы

  • Нет связанных вопросов^_^