我创建了一个基本的QML应用程序,使用QQuickView创建视图,并在其中使用自定义的QQuickItems。我想通过重新实现mousepressevent(QEvent *)方法来处理其中一个QQuickItem上的鼠标事件。然而,当我运行应用程序并单击QQuickItem时,没有调用mousepressevent(QEvent *)方法。
QQuickItem的头文件如下所示:
注意:我正在使用场景图来渲染QuickItem。
这是cpp文件中的一段代码片段:
QQuickItem的头文件如下所示:
#include <QQuickItem>
#include <QSGGeometry>
#include <QSGFlatColorMaterial>
class TriangularGeometry: public QQuickItem
{
Q_OBJECT
public:
TriangularGeometry(QQuickItem* parent = 0);
QSGNode* updatePaintNode(QSGNode*, UpdatePaintNodeData*);
void mousePressEvent(QMouseEvent *event);
private:
QSGGeometry m_geometry;
QSGFlatColorMaterial m_material;
QColor m_color;
};
注意:我正在使用场景图来渲染QuickItem。
这是cpp文件中的一段代码片段:
void TriangularGeometry::mousePressEvent(QMouseEvent *event)
{
m_color = Qt::black;
update(); //changing an attribute of the qquickitem and updating the scenegraph
}
我可以从应用程序中处理鼠标事件,但根据我的要求,我需要通过重写方法 mousePressEvent(QMouseEvent *event) 来处理它。