В 'AppListView' есть пустые места, где Loader должен загрузить Компонент с 'SimpleRow' - PullRequest
0 голосов
/ 24 октября 2018

У меня есть приложение с кодом, написанное на 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:

android theme

Тема iOS:

ios theme

Это мой код в 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")
        }
    }
}
...