“ AppListView”中的空白处是Loader应使用“ SimpleRow”加载组件的地方

时间:2018-10-24 13:21:34

标签: qt qml v-play

我在github here上有一个用QT / QML和V-PLAY编写的代码应用程序:

我的问题:

我想使用AppListView在“ Ustawienia”(“设置”)页面中显示不同的元素(例如Button或SwitchApp),具体取决于数组中的元素:

property var typeOfElementsInSettings: ['switch','switch','button','switch']

在这个thread的启发下,我使用了'delegete:Loader'来做到这一点。我从其他文件加载组件,其中一个将包含Button,另一个将包含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")
        }
    }
}

0 个答案:

没有答案