簡體   English   中英

QT TCP 套接字連接異常。 arguments 到 function 太多

[英]QT TCP socket connection exception. Too many arguments to function

幫助,我到處尋找可能的地方。 如果我從主 class 創建到 TCP 服務器的連接,那么一切正常。 但是,如果我創建一個單獨的 class,它會給出錯誤“太多 arguments 無法運行”。

例外

在此處輸入圖像描述

Qt 版本 5.9.9 使用QTcpSocket

tcpclient.h

#ifndef TCPCLIENT_H
#define TCPCLIENT_H

#include <QObject>
#include <QTcpSocket>
#include <QDataStream>
#include <QHostAddress>

class TcpClient : public QObject {

public:
    TcpClient(QObject *parent = 0);

private:
    QTcpSocket *tcpSocket;

    const QString ip = "185.137.235.92";
    const int port = 9080;

public slots:
    void connect();

private slots:
    void onReadyRead();
    void onConnected();
    void onDisconnected();
};

#endif // TCPCLIENT_H

tcpclient.cpp

#include "tcpclient.h"

TcpClient::TcpClient(QObject *parent) :QObject(parent) {
    tcpSocket = new QTcpSocket(this);

    connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(onReabyRead()));
    connect(tcpSocket, SIGNAL(connected()), this, SLOT(onConnected()));
    connect(tcpSocket, SIGNAL(disconnected()), this, SLOT(onDisconnected()));
}

void TcpClient::connect() {
    tcpSocket->connectToHost(QHostAddress(ip), port);
}

void TcpClient::onReadyRead() {

}

void TcpClient::onConnected() {
    if(tcpSocket->waitForConnected() ) {
        QDataStream in(tcpSocket);
        ushort id;
        uint size;
        quint8 type;
        ushort action;
        QString message;

        in >> id >> size >> type >> action;

        message  = tcpSocket->read(size);

        qDebug() << id;
        qDebug() << size;
        qDebug() << type;
        qDebug() << action;
        qDebug() << message;
    }
}

void TcpClient::onDisconnected() {

}

編譯器發現了歧義,因為看起來您正在嘗試調用該方法

 void TcpClient::connect()

這是沒有參數......所以解決方案是“告訴編譯器應該采用哪種方法”,即你必須替換它:

connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(onReabyRead()));

QObject::connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(onReabyRead()));

通過此修改,編譯器知道您編寫的連接調用是來自QObject class 而不是TcpClient

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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