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