Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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
Qt 从另一个QML文件访问TextField_Qt_Qml - Fatal编程技术网

Qt 从另一个QML文件访问TextField

Qt 从另一个QML文件访问TextField,qt,qml,Qt,Qml,我有两个.qml文件: 自定义文本.qml: Item { TextField { id: t1 placeholderText: qsTr("Enter name") } } Window { visible: true width: 640 height: 480 title: qsTr("Hello World") CustomText {width: 200; height: 200}

我有两个.qml文件:

自定义文本.qml

Item 
{
    TextField
    {
        id: t1
        placeholderText: qsTr("Enter name")
    }
}
Window 
{
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    CustomText {width: 200; height: 200}

    Rectangle
    {
        id: r1      
        border.color: "black"
        width: 200
        height: 200
        x: 200
        y: 200
        Text 
        {
            text: t1.text
        }
    }
}
main.qml

Item 
{
    TextField
    {
        id: t1
        placeholderText: qsTr("Enter name")
    }
}
Window 
{
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    CustomText {width: 200; height: 200}

    Rectangle
    {
        id: r1      
        border.color: "black"
        width: 200
        height: 200
        x: 200
        y: 200
        Text 
        {
            text: t1.text
        }
    }
}

此代码无效,因为id未知。如何从
main.qml
中的
TextField
访问文本?

有几种方法可以实现这一点,即

  • 别名
    t1.text
    ,绑定
    customText.text
    ,或
  • 别名
    t1
    ,绑定
    customText.t1.text
  • 请注意,在这两种方法中,我们都需要为您的
    CustomText
    实例提供
    id
    ,以便我们可以引用它。在这两种方法中,我们还将使用。这些允许您公开
    自定义文本的某些属性

    别名
    t1.text
    ,绑定
    customText.text
    别名
    t1
    ,绑定
    customText.t1.text
    如果您只需要使用
    TextField
    中的文本,而不需要其他内容,我建议您使用第一种方法,因为您仍然可以封装
    t1
    的其余部分(也可以说是“private”变量)


    通常,除非必须修改文件外部的整个
    t1
    对象,否则不要使用第二种方法。(可能有一些例外,但这样的模式往往表明设计模式中存在缺陷,需要重构。)坚持第一种方法。如果您发现自己必须引用/修改
    文本字段
    占位符文本
    字体
    等)的其他属性,那么您也应该别名并公开这些属性。

    非常感谢。这就是我寻找的解决办法。