gpt4 book ai didi

qt - 处理 QQuickItem 上的鼠标事件

转载 作者:行者123 更新时间:2023-12-04 10:07:54 25 4
gpt4 key购买 nike

我创建了一个基本的 QML 应用程序,它使用 QQuickView 创建 View ,并在其中包含自定义 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;
};

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

最佳答案

确保你在处理事件之前调用了这个方法(构造函数是个好地方):
setAcceptedMouseButtons(Qt::AllButtons);
按钮枚举当然可以是任何你想要的。

关于qt - 处理 QQuickItem 上的鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18864420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com