QML,如何从另一个qml访问元素

时间:2015-12-09 14:03:45

标签: qt qml

我想问一个简单的问题,以便快速解决。我在 main.qml 中有ListViewButton,在 closingtaskdelage.qml 中有Component。这是文件 main.qml

ListView
{
    id: grid

    delegate:mydelegate


    model: mymodel
    spacing: 5
    orientation:ListView.Vertical
    Layout.preferredWidth: width_commmon
    Layout.preferredHeight: height_body
    Layout.maximumHeight: 800
    Layout.alignment: Qt.AlignHCenter
    // highlightFollowsCurrentItem: false
    focus: true

    ClosingTaskModel
    {
        id:mymodel
    }

    ClosingTaskDelegate
    {
        id:mydelegate
    }


}

Button
{
    id:finishbutton
    Layout.alignment: Qt.AlignHCenter
    Layout.preferredWidth: width_commmon
    Layout.preferredHeight:height_endbutton
    text: "İş Emrini Tamamla"
    onClicked:
    {
         // console.log((grid.children["border1"]).id);
    }
}

并提交 ClosingTaskDelegate.qml

Component
{
    id:component1

    Rectangle
    {
        signal sendMenuValuestoJS
        height: 200
        width: 200

        Text
        {
            id:text1;
            text:header;
            height:parent.height/2
            //    width: parent.width

            anchors.horizontalCenter:parent.horizontalCenter;
            font.pointSize:20;
            color:"red";
            //  height:parent.height/2
            //  width: parent.width
        }
    }
}

不关心细节。我的主要问题是:当 main.qml 中出现onClickButton()时,必须触发信号 sendMenuValuestoJS()。此信号必须发送字符串值作为参数(即发送文字)。 我无法从 main.qml 访问信号。我在Component中定义了信号,但我得到了运行时QML错误:

Component objects cannot declare new signals.

如何连接 信号到某些功能

2 个答案:

答案 0 :(得分:2)

如何使用Connections

这是一个想法,

/* main.qml */
Rectangle {
    width: 200
    height: 200

    MouseArea {
        id: mouse
        anchors.fill: parent
    }

    Click {
        id: click
        targetto: mouse
    }
}

/* Click.qml */
Item {
    property variant targetto
    Connections {
        target: targetto
        onClicked: console.log("CLICKED!");
    }
}

答案 1 :(得分:0)

Here是来自Signal Handler Attributes章节的官方Qt网站的例子。