如何在 qml 中使用加载表单中的鼠标点击区域?

How to use mouseclick area from loaded Form in qml?

下面是我的代码片段,我正在使用动态对象创建方法加载 qml ui 现在我必须实现驻留在加载文件中的 mousearea,谁能帮我做这个

Qt.createQmlObject(" import QtQuick 2.0

     Loader {
         id: pageLoader
         source: '/HomeScreenForm.ui.qml'
         anchors.fill: parent
         anchors.rightMargin: 0
         anchors.leftMargin: 0
         anchors.bottomMargin: parent
         anchors.topMargin: parent

         }


        ", rectangle7)

创建自定义项目包含 MouseArea。要使该区域可从外部访问,您可以使用 alias,例如:

MyItem.qml

import QtQuick 2.7

Rectangle {
    id: root
    color: "yellow"
    property alias area: mouseArea

    MouseArea {
        id: mouseArea
        anchors.fill: parent
    }

    Text {
        anchors.centerIn: parent
        text: "Click me!"
    }
}

然后就可以动态创建了:

import QtQuick 2.7
import QtQuick.Window 2.0

Window {
    id: mainWindow
    width: 600
    height: 600
    visible: true

    Component.onCompleted: {
        var component = Qt.createComponent("MyItem.qml");
        if (component.status === Component.Ready) {
            var obj = component.createObject(mainWindow);
            obj.width = 200;
            obj.height = 200;
            obj.anchors.centerIn = mainWindow.contentItem;
            obj.area.onPressed.connect(
                    function(mouse){ 
                        console.log("pressed at (", mouse.x,",",mouse.y,")")
                    });
        }
    }
}

另一种方法是使用 Connections,@derM 已经注意到了。