设置加载项属性

时间:2015-11-05 04:45:35

标签: qt qml qt5 qtquick2

在文件管理器的context中,我在文件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
}

现在在main.qml,我想在Tab中加载此组件。由于TabLoader,我可以执行以下操作:

TabView {
    id: tabView2

    Tab {
        title: qsTr("Home")
        source: "dirview.qml"
    }
}

但是,我需要做的是以某种方式传递URL字符串以设置folder_url组件的dirview.qml属性,并且该字符串必须覆盖默认值file:///tmp(所以我正在谈论某种“约束力”。)

我尝试了一些不起作用的事情,例如使用Tab.onLoaded来设置item.folder_url = "file:///home"。视图不会改变。

这样做的正确方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用Loader.item属性访问Tab对象。根据文件:

  

此属性包含当前加载的顶级对象

例如:

Tab {
    title: qsTr("Home")
    source: "dirview.qml"
    onLoaded: {
        item.folder_url = "file:/home"
    }
}