Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QQuickView:在C+中处理鼠标事件+;_C++_Qt_Qml_Qtquick2_Qtquickcontrols - Fatal编程技术网

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

C++ QQuickView:在C+中处理鼠标事件+;,c++,qt,qml,qtquick2,qtquickcontrols,C++,Qt,Qml,Qtquick2,Qtquickcontrols,我使用QQuickView::beforeRendering事件在qml控件下渲染三维模型。 我想在C++中做鼠标事件处理,如果用户点击QML控件外的任何一个/我如何在QQueVIEW::MouthPesiSeVoT中发现鼠标被压在QML控件之外? < P>我认为用自定义代码> QQuijiT>/代码>更容易做到这一点,因为使用自定义的QQuickView显然意味着您在事件到达任何项目之前就获得了事件 下面是一个例子: #include <QtQuick> class MyItem

我使用QQuickView::beforeRendering事件在qml控件下渲染三维模型。
我想在C++中做鼠标事件处理,如果用户点击QML控件外的任何一个/我如何在QQueVIEW::MouthPesiSeVoT中发现鼠标被压在QML控件之外?

< P>我认为用自定义代码> QQuijiT>/代码>更容易做到这一点,因为使用自定义的
QQuickView
显然意味着您在事件到达任何项目之前就获得了事件

下面是一个例子:

#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();
}
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"
    }
}