Невозможно получить доступ к значению Qsettings внутри компонента элемента списка в каскадах blackberry, используя qml
У меня есть просмотр списка на моей домашней странице, который имеет пользовательский компонент listitem. У меня есть значение в моей переменной Qsettings, к которому я могу получить доступ на домашней странице, но я не могу получить доступ к нему внутри пользовательского компонента listitem. При загрузке домашней страницы журнал данных Qsetting печатается в onCreationCompleted домашней страницы, но показывает ошибку в onCreationCompleted customlistitemhomepage. Ниже приведен пример кода для структуры моей домашней страницы и структуры customlistitemhomepage.
Page {
Container {
layout: DockLayout {
}
ScrollView {
id: homePageScroll
Container {
layout: DockLayout {
}
ListView {
id: contactListView
dataModel: contactsData
preferredHeight: homePageScroll.listHeight
overlapTouchPolicy: OverlapTouchPolicy.Allow
listItemComponents: [
ListItemComponent {
id: homeListComponent
type: "item"
CustomListItemHomePage {
id: listCell
}
//Some code
}
]
}
}
}
onCreationCompleted: {
console.log("Clipboard value:"+_settings.getValueFor("clipBoard", "No Data")); //THIS PRINTS CORRECTLY
}
}
}
Я также вошел в систему внутри CustomListItemHomePage.qml
CustomListItemHomePage {
onCreationCompleted: {
console.log("Clipboard value:"+_settings.getValueFor("clipBoard", "No Data")); //THIS SHOWS ERROR CAN'T Find variable _settings
}
}
1 ответ
ListItemComponents не может иметь право вызывать функцию снаружи из Listview. Поэтому, если вы хотите вызвать функцию QSettings в CustomListItemHomePage.qml, вы можете сделать так:
ListView {
id: contactListView
dataModel: contactsData
preferredHeight: homePageScroll.listHeight
overlapTouchPolicy: OverlapTouchPolicy.Allow
listItemComponents: [
ListItemComponent {
id: homeListComponent
type: "item"
CustomListItemHomePage {
id: listCell
// Now you are able to call getClipboardValue() from ListItemComponent like
// listCell.ListItem.view.getClipboardValue()
}
//Some code
}
]
function getClipboardValue() {
return _settings.getValueFor("clipBoard", "No Data"));
}
}