Russian Qt Forum

Qt => Qt Quick => Тема начата: Ubuntu_linux от Декабрь 15, 2011, 15:50



Название: Потяните вниз чтоб обновить
Отправлено: Ubuntu_linux от Декабрь 15, 2011, 15:50
В всяких прогах используется ListView для отображения списков айтемов, но есть прикол-потяни и список обновиться. Как это сделать?


Название: Re: Потяните вниз чтоб обновить
Отправлено: kibsoft от Декабрь 15, 2011, 16:09
Может ListView во Flickable засунуть, когда тянешь - появляется элемент с надписью, отпускаешь - contentY меняется, чтобы выровнять ListView. Ну а соответственно когда появилась надпись - обновлять модель.
P.S. Это первое, что пришло в голову.


Название: Re: Потяните вниз чтоб обновить
Отправлено: Ubuntu_linux от Декабрь 15, 2011, 16:15
но дело в том, что тогда надпись будет все время висеть сверху, а она должна прятатся.


Название: Re: Потяните вниз чтоб обновить
Отправлено: kibsoft от Декабрь 15, 2011, 16:54
Может я непонятно написал просто :)
Цитировать
отпускаешь - contentY меняется, чтобы выровнять ListView.
Я имел в виду, что при отпускании скрывается надпись и соответственно меняется contentY у Flickable, чтобы выровнять ListView.


Название: Re: Потяните вниз чтоб обновить
Отправлено: kibsoft от Декабрь 15, 2011, 17:20
Код:
Item {
    width: 150
    height: 150

    Text {
        id: label
        anchors.top: list.top
        text: "Updating..."
        font.pixelSize: 14
        visible: list.contentY < 0
    }
    ListView {
        id: list
        anchors.fill: parent
        model: 10
        delegate: Text {
            text: "Item " + index
            color: "red"
        }

        onContentYChanged: {
            if (contentY < -label.paintedHeight)
                contentY = -label.paintedHeight;
        }
    }
}

Вот простой пример. Если нужно, чтобы текст был прикреплен к первому элементу списка - можно поиграться с header.
P.S. Пример с Flickable был плохой идеей :)


Название: Re: Потяните вниз чтоб обновить
Отправлено: Ubuntu_linux от Декабрь 19, 2011, 02:59
Да, хорошая идея, так и делаю....