如何访问QMouseEvent中的受保护成员以获取鼠标位置的浮点值?[Qt开发者]
如何访问QMouseEvent中的受保护成员以获取鼠标位置的浮点值?[Qt开发者],qt,inheritance,mouseevent,mouse-position,qmouseevent,Qt,Inheritance,Mouseevent,Mouse Position,Qmouseevent,QMouseEvent存储鼠标位置的整数值。 但是,它有一个保护成员“s”,它存储鼠标位置的浮点值。 如何获取浮点值 我已尝试继承QMouseEvent,但不幸的是,我一直收到此错误消息 错误:C2511:'QMouseEventF::QMouseEventF(QWidget*)':重载 在“QMouseEventF”中找不到成员函数 这是我的头文件: #ifndef QMOUSEEVENTF_H #define QMOUSEEVENTF_H #include<QMouseEvent&g
QMouseEvent
存储鼠标位置的整数值。
但是,它有一个保护成员“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
首先,头文件和源文件之间的签名不同,因为头构造函数不同于源构造函数。QMouseEvent不从QObject或QWidget继承 其次,QMouseEvent不采用QWidget*作为构造函数 第三,头中不需要Q_OBJECT宏
这些就是代码正确性的原因。为了回答最初的问题,使用浮点值是没有意义的,因为整数值是鼠标事件对像素坐标的操作。如果需要将其转换为float,您可以通过强制转换来实现。QMouseEvent::windowPos()和QMouseEvent::screenPos()如何?它们是公共的,你是对的,但它们是整数值,我需要浮点值。浮点值存储在受保护的成员中。两者都返回QPointF。这是浮点精度谢谢,我试过使用QPointF。它用于存储和返回鼠标位置的浮点。但不幸的是,尽管它被定义为浮点类型,但实际上它存储了一个整数值。这是完全正常的,因为它是像素。我确信,如果您签入调试器,您的受保护成员将具有类似的值。谢谢,您的建议帮助我解决了错误消息,但同时它会导致另一个问题!mouseMoveEvent现在不会被触发!
#include "qmouseeventf.h"
QMouseEventF::QMouseEventF(QWidget *parent ): QMouseEvent(parent)
{
}
QMouseEventF::~QMouseEventF()
{
}
qreal QMouseEventF::GetX()
{
return this->s.rx();
}