Невозможно получить доступ к значению Qsettings внутри компонента элемента списка в каскадах ежевики с использованием 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
     }                             
 }

person Francis F    schedule 07.01.2015    source источник


Ответы (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"));
    }
}
person Ankur    schedule 09.01.2015
comment
Как мне получить доступ к этому возвращаемому значению в CustomListItemHomePage? Есть ли способ вызвать функцию внутри CustomListItemHomePage.qml из списка в homepage.qml? - person Francis F; 09.01.2015
comment
Нет, это зависит от вас, как вы собираетесь его использовать. - person Ankur; 09.01.2015