22

他の同様の質問を確認して解決策を試しましたが、うまくいきません。

基本的に、投稿リクエストのみを行う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: No such slot QObject::finishedSlot(QNetworkReply *)"

何か案が?

4

3 に答える 3

47

Q_OBJECTマクロの使い方を忘れている可能性があります。独自のスロット/シグナルを実装するすべてのクラスには、そのマクロが必要です。ヘッダー/ソース ファイルを .pro ファイルに追加する必要があることを忘れないでください。

于 2013-11-10T06:17:21.200 に答える