簡體   English   中英

如何將此SIGNAL和SLOT轉換為qt5 connect呼叫?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM