假设我们有一个如下所示的 QML 文件:
Window {
Component.onCompleted: rect.color ="green"
TabView {
Tab {
Rectangle {
id: rect
color: "white"
}
}
}
}
当我运行这段代码时,出于某种原因,它给了我这个错误:
ReferenceError: rect is not defined
有人会说这是范围问题,但下面的代码工作正常:
Window {
Component.onCompleted: rect.color ="green"
Item {
Item {
Rectangle {
id: rect
color: "white"
}
}
}
}
在我的例子中,我有一个很大的表单,里面有选项卡和控件,我将所有控件传递给几个函数来验证表单,即像这样的一些代码:
function onClose() {
validate(control1);
validate(control2);
// etc
}
但是在通过 id
访问控件时出现上述错误。
最佳答案
将矩形绑定(bind)到颜色参数而不是硬编码值怎么样?
这将进一步分离您的模型和 View 代码,以使其在项目的其他地方也更具可读性......尝试:
Window {
property string myColor: "White"
Component.onCompleted: myColor = "Green"
TabView {
Tab {
Rectangle {
id: rect
color: myColor
}
}
}
要查看 QML 对象树,您需要在 Debug模式下启动您的项目。然后拆分您的代码窗口,以便显示“局部变量和表达式” View (在右侧勾选复选框)。您将看到您的根项和嵌套在树中的所有其他控件,现在您可以直接编辑它们的属性值,更改将立即呈现。有一个关于调试的 youtube 视频教程:https://youtu.be/mPXn6L2Wftc?t=19m55s
我不确定树是否会让您在运行时访问控件,但它可能会帮助您进行调试。
关于qt - 无法访问 TabView/Tab 内的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30499037/