Невозможно получить доступ к значению 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"));
    }
}
Другие вопросы по тегам