处理QQuickItem上的鼠标事件

时间:2013-09-18 05:19:53

标签: qt mouseevent qtquick2

我创建了一个基本的QML应用程序,它使用QQuickView创建视图,并在其中包含自定义的QQuickItems。我想通过重新实现 mousepressevent (QEvent *)方法来处理一个这样的QQuickItem上的鼠标事件。 但是,当我运行应用程序并单击QQuickItem时,不会调用 mousepressevent (QEvent *)方法。

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;
}; 

注意:我正在使用scenegraph来渲染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)来处理它。

1 个答案:

答案 0 :(得分:14)

确保在处理事件之前调用了此方法(构造函数是个好地方):

setAcceptedMouseButtons(Qt::AllButtons);

按钮枚举当然可以是你想要的任何东西。

相关问题