Как я могу решить проблему (Несовместимые аргументы отправителя / получателя)? - PullRequest
1 голос
/ 26 августа 2011

Вот код, в котором я использую «CONNECT». Я использую его для перехода в слот «slotReadyRead», где я могу прочитать содержимое ответа.Но у меня появляется сообщение при отладке или запуске программы: ---->

QObject :: connect: несовместимые аргументы отправителя / получателя QNetworkReplyImpl :: readyRead () -> MainWindow :: slotReadyRead (QNetworkReply *)

.cpp

    void MainWindow::on_pushButton_clicked()
{
     QNetworkAccessManager* manager = new QNetworkAccessManager(this);
     QNetworkRequest request;
     request.setUrl(QUrl("http://lascivio.co/mobile/get.php?name=marwa"));
     QNetworkReply *reply = manager->get(request);
     connect(reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead(QNetworkReply*)));
}
void MainWindow::slotReadyRead(QNetworkReply* reply)
{
    QByteArray b (reply->readAll());
    QString s(b);
    ui->lineEdit->setText(s);
}

.h

public slots:
    void slotReadyRead(QNetworkReply* reply);

Ответы [ 2 ]

6 голосов
/ 26 августа 2011

Слот должен иметь подпись, совместимую с сигналом. Так что либо определите это как:

void slotReadyRead();

Или сделать ответ необязательным:

void slotReadyRead(QNetworkReply* reply = null);
3 голосов
/ 26 августа 2011

Вы не можете вставить вилку в розетку, если она не предназначена для этого. Я вижу два варианта:

  1. Сделать reply членом MainWindow (быстрое и грязное решение)
  2. Создайте новый класс, который будет иметь QNetworkReply* в качестве члена и слот для обработки данных ответа, когда он будет готов.

Кстати: я думаю, что вы хотите connect(reply, SIGNAL(finished()), this, SLOT(slotProcessReply()) ( документация ). А вот пример HTTP из коллекции примеров Qt ! Посмотрите network / http / httpwindow.h и network / http / httpwindow.cpp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...