【发布时间】:2013-11-22 02:31:26
【问题描述】:
我检查了其他类似的问题并尝试了他们的解决方案,但它们对我不起作用。
我基本上是在尝试制作一个只发出 post 请求的 http 客户端。为此,我需要将QNetworkManager 的完成信号连接到某个回调槽。
这是我的代码。
h 文件:
...
public slots:
void finishedSlot(QNetworkReply* reply);
private:
QNetworkAccessManager *network_manager;
...
cpp 文件:
...
Class1::Class1(){
network_manager = new QNetworkAccessManager(this);
QObject::connect(network_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(finishedSlot(QNetworkReply *)));
}
...
void Class1::finishedSlot(QNetworkReply* reply)
{
// some logic with reply
}
...
如您所见,该插槽肯定存在,并且在头文件中的公共插槽下声明。所以我不知道为什么会这样。我已经尝试过清理、运行 qmake 并重新构建。
错误信息是:
"QObject::connect: 没有这样的槽 QObject::finishedSlot(QNetworkReply *)"
有什么想法吗?
【问题讨论】:
-
请注意错误是 QObject::finishedSlot。这意味着 Qt 不知道您的子类。这意味着没有生成有关它的元信息。这意味着
moc没有在您的班级上运行。这意味着您的课程缺少Q_OBJECT宏。 -
你一定不要忘记在“slots:”区域指定你的槽函数(在头文件中)
标签: c++ qt qt5 qt-signals