如何从函数外部访问TabView内部的QML元素
How to access QML elements inside TabView from the function outside?
在我的QML应用程序中,我有一个TabView、Tabs以及一些按钮和文本字段。我需要使用TabView组件外部的自定义功能来访问它们,该组件由选项卡内部的按钮调用
我的代码很简单:
ApplicationWindow {
function showText() {
console.log(tabView.testText);
}
TabView {
id: tabView
property alias testText: test.text
Tab {
title:'tab1'
RowLayout {
Button {
text:"PRINT"
onClicked: {
showText()
}
}
Text {
id:test
text:'Test123'
}
}
}
Tab {
title:'tab2'
}
}
}
但我收到了别名创建行的错误消息:
Invalid alias reference. Unable to find id "test"
它怎么了?我在SO(qt快速控制选项卡视图中的ReferenceError)上也遇到了类似的问题,但代码也不起作用。
我认为您应该再添加一个这样的别名:
TabView {
id: tabView
property var testText: { return getTab(0).tab1Text }
Tab {
id: tab1
title:'tab1'
property alias tab1Text: test.text
RowLayout {
Button {
text:"PRINT"
onClicked: {
showText()
}
}
Text {
id:test
text:'Test123'
}
}
}
Tab {
title:'tab2'
}
}
如本答案中所述,Tab
基本上是Loader
,这意味着您试图通过别名访问的属性可能尚未加载。alias
有一些严格的要求,其中之一是它们"只有在组件完全初始化后才会激活":
由于您从试图访问的Tab
中调用show()
方法,因此您可以直接传递所需的数据:
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Extras 1.3
import QtQuick.Layouts 1.1
ApplicationWindow {
width: 300
height: 600
visible: true
function showText(text) {
console.log(text)
}
TabView {
id: tabView
Tab {
title: 'tab1'
RowLayout {
Button {
text: "PRINT"
onClicked: {
showText(text)
}
}
Text {
id: test
text: 'Test123'
}
}
}
Tab {
title: 'tab2'
}
}
}
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 调用函数内部的函数
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 在phonegap应用程序内部重定向不起作用
- 使用此选项选择父类内部的类
- 访问JSON对象内部的数组元素
- 从模块内部访问Express装载路径
- AngularJs指令,该指令创建内部有数据对象的新指令
- 如何使用内部对象构造对象
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- 用Javascript修改内部标记的CSS规则
- javascript函数内部的代码用逗号而不是分号分隔
- 正在$rootScope上达到控制器作用域$在内部控制器上
- 光线投射从内部投射时不会碰到网格
- javascript无法重新定义函数内部的全局对象
- 在不移动内部文本的情况下缩放元素的效果
- JavaScript goto 标签如何使用内部循环
- Javascript:循环属性内部的条件递增或递减
- 如何从函数外部访问TabView内部的QML元素
- 是否可以从qml访问持有QVariantMap的QScriptValue内部的任何内容