tre*_*men 3 qt qml qt5 qtquick2
在文件管理器的上下文中,我TableView在文件中保存了一个组件dirview.qml,它使用以下命令显示某个目录的内容FolderListModel:
import QtQuick 2.4
import QtQuick.Controls 1.4
import Qt.labs.folderlistmodel 2.1
TableView {
id: tableView
property string folder_url: "file:///tmp"
anchors.fill: parent
TableViewColumn {
role: "fileName"
title: qsTr("Name")
width: tableView.width * 0.7
}
TableViewColumn {
role: "fileURL"
title: qsTr("Size")
width: tableView.width * 0.2
}
FolderListModel {
id: folderModel
folder: folder_url
nameFilters: ["*"]
showHidden: true
showDirsFirst: true
showDotAndDotDot: true
}
model: folderModel
}
Run Code Online (Sandbox Code Playgroud)
现在main.qml,我想在Tab. 由于Tab是 a Loader,我可以执行以下操作:
TabView {
id: tabView2
Tab {
title: qsTr("Home")
source: "dirview.qml"
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我需要做的是以某种方式传递一个 URL 字符串以设置组件的folder_url属性dirview.qml,并且该字符串必须覆盖默认值file:///tmp(所以我正在谈论某种“绑定”)。
我尝试了一些不起作用的东西,例如使用Tab.onLoadedto set item.folder_url = "file:///home"。视图没有变化。
正确的做法是什么?
谢谢!
您可以使用Loader.item属性来访问Tab对象。根据文档:
此属性保存当前加载的顶级对象
例如:
Tab {
title: qsTr("Home")
source: "dirview.qml"
onLoaded: {
item.folder_url = "file:/home"
}
}
Run Code Online (Sandbox Code Playgroud)