Como adicionar algum preenchimento entre um ListView e seu rodapé?

5

Considere o seguinte snippet QML:

ListView {
    //...

    footer: Text {
        text: "Sample Text"
    }
}

Isso exibirá o texto "Sample Text" diretamente na parte inferior do ListView. No entanto, não há espaço entre o último item da lista e o texto.

Como adiciono espaçamento / preenchimento? Eu tentei definir anchors.top e anchors.topMargin , mas tudo o que isso faz é me dar o aviso "Possível laço de âncora detectado na âncora vertical". Nada parece funcionar.

    
por Nathan Osman 19.11.2014 / 07:55

3 respostas

2

Estou usando o ContactModel.qml disponível no exemplo .

Para adicionar algum espaçamento entre o rodapé e o último elemento da lista, você pode criar um componente dedicado para o seu rodapé e modificar o layout da maneira que quiser dentro dele:

import QtQuick 2.0
import Ubuntu.Components 0.1

Item {
    width: 200
    height: 350

    ListView {
        width: 180; height: 200
        model: ContactModel {}
        delegate: Text {
            text: name + ": " + number
        }

        Component {
            id: myfooter
            Item {
                width: parent.width
                height: units.gu(3)
                Text {
                    anchors.bottom: parent.bottom
                    text: "Sample Text"
                }
            }
        }

        footer: myfooter
    }
}

O resultado:

    
por Sylvain Pineau 21.11.2014 / 09:59
2

O que acabei fazendo foi criar um Column e inserir um Rectangle antes do conteúdo que eu queria que aparecesse no rodapé:

Rectangle {
    color: "transparent"
    width: parent.width
    height: units.gu(3)
}
    
por Nathan Osman 26.11.2014 / 01:55
0

Cuidado com os retângulos transparentes nas fontes, eles simplesmente não são atribuídos ainda nessa fonte, outras fontes podem exibir caracteres especiais ou dingbats!

Você já tentou o óbvio (escape newline)

footer: Text {
    text: "\nSample Text"
}
    
por Ken Mollerup 20.12.2014 / 18:11