【问题标题】:QNetworkAccessManager - No such signalQNetworkAccessManager - 没有这样的信号
【发布时间】:2018-06-22 15:23:02
【问题描述】:
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')

【问题讨论】:

  • 您在信号中的 QNetworkReply 一词中缺少一个“r”。
  • 啊。谢谢。错别字是我的第一大敌人

标签: c++ qt qtnetwork


【解决方案1】:

当您使用 SIGNAL 和 SLOT 宏连接信号时,您只需要传递信号传输的数据类型,在您的情况下应该是:

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

虽然建议使用new syntax:

connect(manager, 
        &QNetworkAccessManager::finished, 
        this, 
        &MainWindow::handleGetReply);

【讨论】:

  • 太棒了,新语法就可以了!第一个例子仍然对我不起作用
  • 根据对 OP 的评论编辑第一个示例
猜你喜欢
  • 2018-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多