0

のカスタム クラスを実装しようとしQTcpSocketていますが、実行時にスロットが認識されないようです。

Object::connect: No such slot QTcpSocket::timeoutSlot()

これが私のコードです:

私のヘッダー:

#ifndef CUSTOM_SOCKET_H
#define CUSTOM_SOCKET_H

#include <QTcpSocket>
#include <QTimer>

class CustomSocket : public QTcpSocket {
    Q_OBJECT
public:
    CustomSocket(QObject* = 0);

private:
    QTimer *mAuthTimeout;

public slots:
    void timeoutSlot();

};
#endif

実装:

#include "customSocket.h"

CustomSocket::CustomSocket(QObject *aParent):QTcpSocket(aParent)
{
  mAuthTimeout = new QTimer();
  connect(mAuthTimeout, SIGNAL(timeout()), this, SLOT(timeoutSlot()));
  mAuthTimeout->start(5000);

}

void CustomSocket::timeoutSlot(){
  std::cout << "Timeout " << std::endl;
}
4

2 に答える 2

0

上記のコードに問題はありません。

表示される警告には、2 つの奇妙な点があります。

  • QTcpSocket::timeoutSlot() について文句を言います。QTcpSocket ではなく、CustomSocket に接続しようとしています。警告はこれに言及する必要があります。そうでない場合は、Q_OBJECT マクロが見つからない可能性があります。
  • コードをコピーして空のディレクトリに追加する場合は、main() を追加してから、qmake -project; を使用します。qmake; 作る。それはうまく動作します。警告なし。
于 2013-11-02T09:38:19.217 に答える