Как сохранить последние элементы в поле зрения при добавлении их в просмотр списка? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть ListView, где я динамически добавляю ListElements.ListView имеет максимум 10 элементов, которые можно просматривать, поэтому у меня также есть ScrollBar.Когда я добавляю элемент 11-й элемент +, я всегда хочу, чтобы он прокручивался в окне просмотра.

ListView {
    id: logListView
    delegate: logListViewDelegate
    model: logListModel

    anchors.fill: parent

    ScrollBar.vertical: ScrollBar {}
}

ListModel {
    id: logListModel
}

Component {
    id: logListViewDelegate
    Item {
        height: 44
        width: logListView.width

        Text {
            id: countText
            width: 18
            font {
                pixelSize: 16
                family: variables.globalFont
            }
            color: colors.foregroundColor3
            text: index+1

            anchors {
                left: parent.left
                leftMargin: 7
                verticalCenter: parent.verticalCenter
            }
        }
        Text {
            id: timeText
            width: 96
            horizontalAlignment: Text.AlignRight
            font {
                pixelSize: 24
                family: variables.globalFont
            }
            color: colors.foregroundColor1
            text: time

            anchors {
                left: countText.right
                verticalCenter: parent.verticalCenter
            }
        }

        Text {
            id: unitText
            width: 18
            font {
                pixelSize: 16
                family: variables.globalFont
            }
            color: colors.foregroundColor3
            text: unit

            anchors {
                left: timeText.right
                leftMargin: 6
                bottom: timeText.bottom
                bottomMargin: 2
            }
        }
    }
}

У меня есть кнопка вне списка просмотра, которая при нажатии просто делает:

logListModel.append({
 time: myTime, unit: myUnit
})

НовыйЭлемент просто добавляется в конец списка и скрывается, когда их больше 10. При добавлении элемента мне бы хотелось, чтобы список автоматически прокручивался до него.

1 Ответ

1 голос
/ 03 апреля 2019

В вашем ListView прокрутите вниз, изменив currentIndex, когда вызывается onCountChanged (когда ваша модель изменилась):

ListView {
  id: logListView
  delegate: logListViewDelegate
  model: logListModel

  anchors.fill: parent

  ScrollBar.vertical: ScrollBar {}

  onCountChanged: {
    var newIndex = count - 1 // last index
    positionViewAtEnd()
    currentIndex = newIndex
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...