gpt4 book ai didi

c++ - 如何将此 SIGNAL 和 SLOT 转换为 qt5 connect 调用?

转载 作者:行者123 更新时间:2023-11-30 03:16:46 24 4
gpt4 key购买 nike

我想使用这种老式连接调用的 qt5 风格:

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

我试过了

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

没有成功:

candidate function not viable: no overload of 'error' matching 'const char*' for 2nd argument

客户端.cpp

FenClient::FenClient()
{
setupUi(this);

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

客户端.h

private slots:
void erreurSocket(QAbstractSocket::SocketError erreur);

最佳答案

根据docs :

Note: Signal error is overloaded in this class. To connect to this signal by using the function pointer syntax, Qt provides a convenient helper for obtaining the function pointer as shown in this example:

connect(abstractSocket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error),
[=](QAbstractSocket::SocketError socketError){ /* ... */ });

所以在你的情况下,解决方案是:

connect(socket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), this, &FenClient::erreurSocket);

关于c++ - 如何将此 SIGNAL 和 SLOT 转换为 qt5 connect 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55998495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com