[英]How to convert this SIGNAL and SLOT to qt5 connect call?
我想使用此舊式connect調用的qt5樣式:
connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this,
SLOT(erreurSocket(QAbstractSocket::SocketError)));
我試過了
connect(socket, &QTcpSocket::error, this, &FenClient::erreurSocket);
沒有成功:
候選函數不可行:第二個參數的'error'匹配'const char *'的重載
FenClient.cpp
FenClient::FenClient()
{
setupUi(this);
socket = new QTcpSocket(this);
connect(socket, &QTcpSocket::error, this, &FenClient::erreurSocket);
FenClient.h
private slots:
void erreurSocket(QAbstractSocket::SocketError erreur);
根據文檔 :
注意:此類中信號錯誤超載。 為了通過使用函數指針語法連接到該信號,Qt提供了一個方便的助手來獲取函數指針,如本示例所示:
connect(abstractSocket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), [=](QAbstractSocket::SocketError socketError){ /* ... */ });
因此,在您的情況下,解決方案是:
connect(socket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), this, &FenClient::erreurSocket);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.