如何将此信号和插槽转换为QT5连接呼叫



我想使用此旧式连接的QT5样式:

connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this,
    SLOT(erreurSocket(QAbstractSocket::SocketError)));

我尝试了

connect(socket, &QTcpSocket::error, this, &FenClient::erreurSocket);

没有成功:

候选功能不可行:对于第二个参数,没有"错误"匹配'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);

相关内容

  • 没有找到相关文章

最新更新