QNetworkAccessManager - нет такого сигнала

void MainWindow::handleGetReply(QNetworkReply  *reply)
{
    qDebug() << reply;
}

void MainWindow::on_getDetailsButton_clicked()
{
    QNetworkAccessManager *manager = new QNetworkAccessManager(this);
    connect(
                manager,
                SIGNAL(finished(QNetwokReply *reply)),
                this,
                SLOT(handleGetReply(QNetworkReply*)));
    manager->get(QNetworkRequest(QUrl("http://google.com")));
}

По какой-то причине это не работает, и у меня есть следующее сообщение:

QObject::connect: No such signal QNetworkAccessManager::finished(QNetwokReply *reply) in ..\MyApplication\mainwindow.cpp:63
QObject::connect:  (receiver name: 'MainWindow')

person Soma Zambelly    schedule 13.01.2018    source источник
comment
Вам не хватает 'r' в слове QNetworkReply в вашем сигнале.   -  person aatwo    schedule 13.01.2018
comment
Ах. Спасибо. Опечатки — мой враг №1   -  person Soma Zambelly    schedule 13.01.2018


Ответы (1)


Когда вы подключаете сигнал с помощью макросов SIGNAL и SLOT, вам нужно передать только тип данных, которые транспортирует сигнал, в вашем случае это должно быть:

connect(manager, 
        SIGNAL(finished(QNetworkReply *)), 
        this, 
        SLOT(handleGetReply(QNetworkReply*)));

Хотя желательно использовать новый синтаксис:

connect(manager, 
        &QNetworkAccessManager::finished, 
        this, 
        &MainWindow::handleGetReply);
person eyllanesc    schedule 13.01.2018
comment
Отлично, новый синтаксис работает! Первый пример все еще не работает для меня, хотя - person Soma Zambelly; 13.01.2018
comment
Отредактируйте 1-й пример на основе комментария к ОП. - person Soma Zambelly; 13.01.2018