2015-01-07 5 views
1

У меня есть список на моей домашней странице, у которого есть пользовательский компонент listitem. У меня есть значение в моей переменной Qsettings, доступ к которой я могу получить на домашней странице, но я не могу получить доступ к тому же внутри компонента customitemem. При загрузке домашней страницы журнал данных Qsetting печатается на сайтеCommerce.com, но отображается ошибка в onCreationCompleted из customlistitemhomepage. Ниже приведен образец кода для моей домашней структуры и структуры customlistitemhomepage.Невозможно получить доступ к значению Qsettings внутри элемента списка listview в каскадах ежевики, используя qml

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 
    }        
} 

ответ

0

В 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")); 
    } 
} 
+0

Как открыть возвращаемое значение в CustomListItemHomePage? Есть ли способ вызвать функцию внутри CustomListItemHomePage.qml из списка в homepage.qml? – Gamerlegend

+0

Нет, это зависит от вас, как вы собираетесь его использовать. – Ankur