使用Qt过程中遇到的bug和解决方法

使用Qt过程中遇到的问题和解决办法

目前使用Qt的版本为5.12.0

信号和槽

连接QTcpSocketerror信号时出错(2020-4-16)

  • 连接代码:
connect(tcpSocket, &QTcpSocket::error, this, &FileSession::slotDealError);

// error定义
void error(QAbstractSocket::SocketError);

// slotDealError定义
void slotDealError(QAbstractSocket::SocketError socketError);
  • 出现的错误
no matching function for call to ‘zsj::FileSession::connect(QTcpSocket*&, <unresolved overloaded function type>, zsj::FileSession*, void (zsj::FileSession::*)(QAbstractSocket::SocketError))’
     connect(tcpSocket, &QTcpSocket::error, this, &FileSession::slotDealError);
  • 解决办法:
  1. 使用QOverload
    connect(tcpSocket, QOverload<QAbstractSocket::SocketError>::of(
                &QAbstractSocket::error),
            this, &FileSession::slotDealError);
  1. 使用SIGNALSLOT
    connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)), this,
           SLOT(slotDealError(QAbstractSocket::SocketError)));
上一篇:数据可视化 世界疫情地图


下一篇:strcmp()字符串比较函数用法