首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QQuickView:在C++中处理鼠标事件

QQuickView:在C++中处理鼠标事件
EN

Stack Overflow用户
提问于 2015-04-13 14:57:49
回答 1查看 1.6K关注 0票数 4

我在qml控件下使用QQuickView::beforeRendering呈现我的3d模型。如果用户单击任何qml控件外部/如何在QQuickView::mousePressEvent中发现鼠标在qml控件外按下,我想在C++中执行鼠标事件处理?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-13 16:35:20

我认为使用自定义QQuickItem更容易做到这一点,因为使用自定义QQuickView显然意味着在事件到达任何项目之前就会得到它们。

下面是一个例子:

代码语言:javascript
复制
#include <QtQuick>

class MyItem : public QQuickItem
{
public:
    MyItem() {
        setAcceptedMouseButtons(Qt::AllButtons);
    }

    void mousePressEvent(QMouseEvent *event) {
        QQuickItem::mousePressEvent(event);
        qDebug() << event->pos();
    }
};

int main(int argc, char** argv)
{
    QGuiApplication app(argc, argv);

    QQuickView *view = new QQuickView;
    qmlRegisterType<MyItem>("Test", 1, 0, "MyItem");
    view->setSource(QUrl::fromLocalFile("main.qml"));
    view->show();

    return app.exec();
}

将自定义项放在场景的底部,它将得到所有未处理的鼠标事件:

代码语言:javascript
复制
import QtQuick 2.3
import QtQuick.Controls 1.0
import Test 1.0

Rectangle {
    width: 400
    height: 400
    visible: true

    MyItem {
        anchors.fill: parent
    }

    Button {
        x: 100
        y: 100
        text: "Button"
    }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29608535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档