如何访问 QMouseEvent 中的受保护成员以获取鼠标位置的浮点值? [Qt 开发人员]

How can I access protected member in QMouseEvent to get a float value of mouse position ? [Qt developers]

QMouseEvent 存储鼠标位置的整数值。 但是,它有一个保护成员 "s",它存储鼠标位置的浮点值。 如何获取浮点值?

我曾尝试继承 QMouseEvent,但不幸的是,我一直收到此错误消息。

error: C2511: 'QMouseEventF::QMouseEventF(QWidget *)' : overloaded member function not found in '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

这里是继承的 class:

#include "qmouseeventf.h"


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

}


QMouseEventF::~QMouseEventF()
{

}


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

首先,header 和源文件之间的签名不同,因为 header 构造函数与源构造函数不同。 QMouseEvent 不继承自 QObject 或 QWidget。

其次,QMouseEvent 不采用 QWidget * 作为构造函数。

第三,header中的Q_OBJECT宏是不需要的。

这些就是代码正确的原因。要回答您最初的问题,使用浮点值是没有意义的,因为整数值是鼠标事件用于像素坐标的值。如果您需要将其转换为浮点数,请自行转换。