1

QMouseEventマウス位置の整数値を格納します。ただし、マウス位置の float 値を格納するプロテクト メンバ「s」があります。フロート値を取得するにはどうすればよいですか?

を継承しようとしましたQMouseEventが、残念ながら、このエラー メッセージが常に表示されます。

エラー: C2511: 'QMouseEventF::QMouseEventF(QWidget *)': オーバーロードされたメンバー関数が 'QMouseEventF' に見つかりません

これは私のヘッダーファイルです:

#ifndef QMOUSEEVENTF_H
#define QMOUSEEVENTF_H

#include<QMouseEvent>

class QMouseEventF : QMouseEvent
{
    Q_OBJECT

    public:
    QMouseEventF(QObject* parent = 0);

    ~QMouseEventF();
    qreal GetX();

};

#endif // QMOUSEEVENTF_H

そして、継承されたクラスは次のとおりです。

#include "qmouseeventf.h"


QMouseEventF::QMouseEventF(QWidget *parent ): QMouseEvent(parent)
{

}


QMouseEventF::~QMouseEventF()
{

}


qreal QMouseEventF::GetX()
{
    return this->s.rx();
}
4

1 に答える 1

1

1 つには、ヘッダー コンストラクターがソース コンストラクターとは異なるため、ヘッダーとソース ファイルの間で異なる署名があります。QMouseEvent は QObject または QWidget から継承しません。

第二に、QMouseEvent はコンストラクターに QWidget * を取りません。

第 3 に、ヘッダーに Q_OBJECT マクロは必要ありません。

これらがコードの正しさの理由です。元の質問に答えるには、整数値はマウスイベントがピクセル座標に対して操作するものであるため、浮動小数点値を使用することは意味がありません。float に変換する必要がある場合は、自分でキャストしてください。

于 2015-04-13T19:24:03.663 に答える