-1

下面是我的代码片段,我正在使用动态对象创建方法加载 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)
4

1 回答 1

1

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

我的项目.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 已经注意到的那样。

于 2016-11-07T07:40:40.600 回答