Вопрос:
У меня проблема с ListView. ListView слишком длинный, и часть его появляется за пределами окна, но я не могу прикрепить панель прокрутки. Я пробовал много разных комбинаций. Я думаю, что проблема заключается в параметре высоты, но если удалить его, ListView отображает только первую запись.
Column{ anchors.fill: parent Row{ id: buttonsRow Button{ text: «Open dump file» onClicked: fileDialog.visible = true } Button{ text: «Copy raw data to clipboard» } } ListView{ id: listView anchors.top: buttonsRow.bottom height: contentHeight //clip: true flickableDirection: Flickable.VerticalFlick boundsBehavior: Flickable.StopAtBounds interactive: true model: ListModel{ id: listModel } delegate: MDelegate{} } }
Есть ли способ сделать это прокручиваемым?
Лучший ответ:
Установка height для contentHeight, вероятно, является проблемой. Это сделало бы ListView таким же высоким, как и все его высоты. Полоса прокрутки работает только тогда, когда высота представления меньше высоты его содержимого.
Здесь используется подход, который использует макеты:
import QtQuick 2.8 import QtQuick.Controls 2.1 import QtQuick.Layouts 1.3 ApplicationWindow { width: 400 height: 300 visible: true ColumnLayout { anchors.fill: parent RowLayout { id: buttonsRow Button { text: «Open dump file» } Button { text: «Copy raw data to clipboard» } } ListView { id: listView flickableDirection: Flickable.VerticalFlick boundsBehavior: Flickable.StopAtBounds model: 100 clip: true delegate: ItemDelegate { text: modelData } Layout.fillWidth: true Layout.fillHeight: true ScrollBar.vertical: ScrollBar {} } } } Ответ №1
В коде, который вы опубликовали, я не вижу, где вы уже ввели прокрутку. Вам нужно включить компонент ScrollBar в ListView, например:
ListView { id: listView ScrollBar.vertical: ScrollBar { active: true } }
См. “Прикрепление ScrollBar к Flickable” на странице https://doc.qt.io/qt-5/qml-qtquick-controls2-scrollbar.html.