我正在尝试构建一个实现QWebSocket的简单程序,但是,我首先尝试做的是检查是否启用了连接。由于没有连接错误信号,所以它没有引发任何异常,但是我可以在云服务器上检查是否进行了任何连接尝试,并发现连接从未发生过。因此,我尝试实施错误信号以查看问题的原因,但似乎无法使该信号连接到我的打印功能。我的意思是我总是会遇到编译时错误。如果有人对我应该如何处理有任何想法,请说出来!
我也尝试过这样。我没有任何编译时错误,但是却遇到了此运行时错误:
QObject::connect(websocket, SIGNAL(error(QAbstractSocket::SocketError error)),cp, SLOT(OnWebSocketError(QAbstractSocket::SocketError error)));
下面是3张图片来说明问题:
主文件:
错误消息:
CustomPrinter类:
也请注意“ qDebug()<<”“ 这是我遇到的错误” QObject::connect: No such signal QWebSocket::error(QAbstractSocket::SocketError error) in ../Websocket1/main.cpp:14"
答案 0 :(得分:1)
使用SIGNAL
和SLOT
宏时,您不能命名参数,而只能命名其类型。
这是错误的:
QObject::connect(websocket, SIGNAL(error(QAbstractSocket::SocketError error)),cp, SLOT(OnWebSocketError(QAbstractSocket::SocketError error)));
这是正确的:
QObject::connect(websocket, SIGNAL(error(QAbstractSocket::SocketError)),cp, SLOT(OnWebSocketError(QAbstractSocket::SocketError)));
此外,最好不要使用宏,而要使用新的语法接受函数指针,这样就可以进行一些编译时检查。
QObject::connect(websocket, &QWebSocket::error, cp, &CustomPritner::OnWebSocketError);
请记住,您必须始终使用QObject*
作为参数,否则它将无法编译。