У меня есть приложение с кодом, написанное на QT / QML и V-PLAY на github здесь :
Моя проблема:
Я хочу использовать AppListView для отображенияразличные элементы (например, Button или SwitchApp) на странице «Ustawienia» (Настройки), зависящие от элементов в массиве:
property var typeOfElementsInSettings: ['switch','switch','button','switch']
Я использую для этого «deletegete: Loader», я вдохновлен в этой теме .Я загружаю компонент из другого файла, один будет иметь внутри кнопку, другой AppSwitcher.Загрузчик вставляет SimpleRow в AppListView, я знаю это, потому что переменная myIndex должна увеличиваться при добавлении SimpleRow и увеличении, но я ничего не вижу.Я имею в виду, что я вижу пустое место в месте, где должен отображаться SimpleRow.
См. Скриншот:
Тема Android:
Тема iOS:
Это мой код в Main.qml
NavigationItem{
title: "Ustawienia"
icon: IconType.cogs
NavigationStack{
Page{
title: "Ustawienia"
AppButton{
id: przy
text: "abba"
}
AppListView{
anchors.top: przy.bottom
model: ListModel{
ListElement{
type: "kategoria 1"; name: "opcja 1"
}
ListElement{
type: "kategoria 1"; name: "opcja 2"
}
ListElement{
type: "kategoria 2"; name: "opcja 3"
}
ListElement{
type: "Opcje programisty"; name: "Czyszczenie ustawień aplikacji"
}
}
section.property: "type";
section.delegate: SimpleSection {
title: section
}
delegate: Loader{
sourceComponent: {
switch(typeOfElementsInSettings[myIndex]){
case "switch":
console.log(typeOfElementsInSettings[myIndex])
console.log("s")
return imageDel;
case "button":
console.log(typeOfElementsInSettings[myIndex])
console.log("b")
return imageDel;
}
}
}
SimpleRowSwitch { id: imageDel }
VideoDelegate { id: videoDel }
}
}
}
onSelected: {
//console.log("selected")
}
Component.onCompleted: {
//console.log("Zrobiono")
}
}
Это мой код в SimpleRowSwitch.qml:
import VPlayApps 1.0
import QtQuick 2.9
Component{
SimpleRow {
x: 100
y: 200
text: name;
AppSwitch{
property int indexOfElementInSettings: 0
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: dp(10)
Component.onCompleted: {
indexOfElementInSettings=myIndex
console.log(myIndex)
if(switchsSettingsLogicArray[myIndex]===1){
checked=true
} else {
checked=false
}
//myIndex++;
}
onToggled: {
console.log(indexOfElementInSettings)
}
}
Component.onCompleted: {
console.log(x)
console.log(y)
console.log(typeOfElementsInSettings[myIndex])
console.log(myIndex)
myIndex++
}
onSelected: {
console.log("abba")
}
}
}