Qt 从另一个QML文件访问TextField
我有两个.qml文件: 自定义文本.qml: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}
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
对象,否则不要使用第二种方法。(可能有一些例外,但这样的模式往往表明设计模式中存在缺陷,需要重构。)坚持第一种方法。如果您发现自己必须引用/修改文本字段
(占位符文本
,字体
等)的其他属性,那么您也应该别名并公开这些属性。非常感谢。这就是我寻找的解决办法。