如何使用鼠标点击区域从加载表单在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已经注意到的。

相关内容

  • 没有找到相关文章

最新更新