Доступ Flickable от родительского элемента
Я пытаюсь вызвать функцию, которая определена внутри элемента Flickable, но, кажется, невозможно получить к нему доступ по id. Следующий код производит ReferenceError: flickable is not defined
когда tab.getValues()
называется:
import QtQuick 2.4
Tab {
id: tab
function getValues() {
flickable.getValues()
}
Flickable {
id: flickable
clip: true
flickableDirection: Flickable.VerticalFlick
contentHeight: column.height
topMargin: 2 * pxPermm
function getValues() {
console.log("flickable.getValues() called")
}
Column {
id: column
// some content
}
}
}
Как еще я должен получить доступ к элементу Flickable? Функция getValues () должна быть размещена внутри Flickable, потому что она должна получить доступ к элементам, размещенным внутри столбца.
1 ответ
Это проблема с Tab
объект. Это Loader
чье свойство по умолчанию sourceComponent
, Когда вы кладете Flickable
элемент внутри него, он преобразуется * в компонент и назначается. Когда ваш Tab
объект просматривается, он создает ваш Flickable
объект, к которому можно получить доступ через item
имущество:
function getValues() {
if(tab.active)
tab.item.getValues();
else
console.log("Tab is not viewed so item does not exists.");
}
Тот Flickable
объект унаследовал, но другой контекст, чем ваш Tab
объект. Это означает, что вы можете получить доступ tab
от flickable
, но нет flickable
от tab
,