使用QPointer和QObject :: connect with C ++ 11

时间:2015-06-09 07:23:33

标签: c++ qt c++11 qpointer

我正在使用Qt 5.4并尝试在"断开连接时尝试恢复接受新连接。发出来自QTcpSocket的信号。所以我分别在.h和.cpp文件中写了以下内容:

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

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

如您所见,我使用QPointer类作为tcpSocket。使用上面的代码,我无法构建我的程序并且没有匹配函数来调用...&#34;如果在没有tcpSocket的情况下定义QPointer,我就不会遇到任何问题。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

直接连接会更聪明。

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

请注意,nextPendingConnection已将父级设置为QTcpServer,因此您还可以通过以下方式访问服务器:

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