問題描述
我檢查了其他類似的問題并嘗試了他們的解決方案,但它們對我不起作用.
I checked other similar questions and tried their solutions but they don't work for me.
我基本上是在嘗試制作一個僅發出發布請求的 http 客戶端.為了做到這一點,我需要將 QNetworkManager
的完成信號連接到某個回調槽.
I'm basically trying to make a http client that only makes post requests. In order to do this, I need to connect QNetworkManager
's finished signal to some callback slot.
這是我的代碼.
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 和重建.
As you can see, the slot is definitely present and it is declared under public slots in header file. So I have no idea why this is happening. I already tried clean, run qmake, and rebuild.
錯誤信息是:
"QObject::connect: No such slot QObject::finishedSlot(QNetworkReply*)"
"QObject::connect: No such slot QObject::finishedSlot(QNetworkReply *)"
有什么想法嗎?
推薦答案
您可能忘記使用 Q_OBJECT
宏.每個實現自己的插槽/信號的類都需要該宏.不要忘記您需要將頭文件/源文件添加到 .pro 文件中.
You probably forgot to use the Q_OBJECT
macro. Every class that implements its own slots/signals needs that macro. Don't forget that you need to add your header/source file to the .pro file.
這篇關于QObject連接函數的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!