2015-11-05 2 views
2

В context из файлового менеджера, у меня есть TableView компонент, сохраненный в файле dirview.qml, который отображает содержимое некоторого каталога с помощью FolderListModel:Set Loader вещь свойство

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. Поскольку Tab является Loader, я могу сделать следующее:

TabView { 
    id: tabView2 

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

Однако то, что мне нужно сделать, это каким-то образом передавая строку URL, чтобы установить folder_url свойство dirview.qml компонента, и эта строка должна перезаписать значение по умолчанию file:///tmp (так что я называю «привязкой»).

Я пробовал несколько вещей, которые не работали, например, используя Tab.onLoaded для установки item.folder_url = "file:///home". Вид не изменяется.

Каков правильный путь?

Спасибо!

ответ

2

Для доступа к объекту Tab вы можете использовать Loader.item. Согласно документации:

Это свойство содержит объект верхнего уровня, который в настоящее время загружены

Например:

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

это действительно прекрасно работает, и это правильный путь. Может, он использовал неправильный путь? Было бы неплохо, если бы вы также могли рекомендовать OP для использования 'alias': это хорошее место, где его можно использовать. Например. он мог бы написать папку свойств alias: folderModel.folder' вместо текущего использования нового свойства. – BaCaRoZzo

+0

Большое вам спасибо! Это было действительно из-за неверного пути, но я подозревал, что 'onLoaded' не был правильным обработчиком, поэтому упустил тривиальную ошибку. И вместо этого я использую «псевдоним свойств». Спасибо за помощь! – treslumen

+0

@treslumen очень хорошо. Счастливое кодирование! :) – BaCaRoZzo

Смежные вопросы