2

グリッド ビューで次のモデルとデリゲート コンポーネントを使用しようとしています。モデルには、デリゲートの可視プロパティをオンまたはオフにするブール型のロール vis があります。後で、この vis プロパティをバックエンドにバインドする予定です。この例では、緑のボタンが意図したとおりに表示されず、赤と茶色のボタンの間に空のスペースが残ります。空きスペースをなくすにはどうすればいいですか。茶色のボタンを赤いボタンの隣に置きたいだけです

これは私のモデルコンポーネントです

ListModel { 
    ListElement {
        rectcolor:"red"
        vis:true
    }
    ListElement {
        rectcolor:"green"
        vis:false
    }
    ListElement
    {rectcolor:"brown"
     vis:true
    }
}

これは私の代理人です

Rectangle {
    width: 100
    height: 62
    visible:model.vis
    Button{color:model.rectcolor}
}
4

3 に答える 3

1

デリゲートのサイズをゼロに変更することでデリゲートを非表示にすることができます (高速でダーティな方法のバリアントとして)

ListView {
    anchors.fill: parent
    delegate: Rectangle {
        width: model.vis ? 100 : 0
        height: model.vis ? 62 : 0
        visible:model.vis
        Rectangle {
            anchors.fill: parent
            color: model.rectcolor
        }
    }
    model: ListModel {
        ListElement {
            rectcolor: "red"
            vis:true
        }
        ListElement {
            rectcolor: "green"
            vis:false
        }
        ListElement {
         rectcolor: "brown"
         vis:true
        }
    }
}
于 2013-10-07T12:15:50.037 に答える