#qt #qml #qtquick2 #qtquickcontrols2
#qt #qml #qtquick2 #qtquickcontrols2
Вопрос:
Я хочу, чтобы в большом ScrollView два просмотра списка следовали друг за другом, скажем, потому, что у них немного разные делегаты. Итак, макет выглядит следующим образом:
К сожалению, тип ListView также является изменяемым, поэтому он не представляет все свое содержимое в виде плоского списка, подходящего для просмотра в режиме прокрутки. Итак, как мне сделать это с помощью Qt Quick views?
Я попробовал трюк: я могу изменять размеры представлений списка следующим образом:
ListView {
id: list1
height: contentHeight spacing * count
model: superModel
delegate: delegate1
}
К сожалению, помимо того, что это грязный взлом и создает ненужный перелистываемый захват моих кликов, на самом деле это не работает: контент просто не помещается, поскольку все еще есть верхние и нижние поля, значение которых я не знаю.
Ответ №1:
Вы должны использовать a ColumnLayout
с двумя Repeater
в a ScrollView
(или Flickable
, если хотите)
ScrollView {
contentWidth: width //maybe you don't need this
ColumnLayout {
width: parent.width //maybe you don't need this
Repeater {
model: superModel1
delegate: delegate1
}
Repeater {
model: superModel2
delegate: delegate2
}
}
}
Поскольку вы не показали делегат, вам может потребоваться незначительная настройка implicitHeight
и / или implicitWidth
.
Комментарии:
1. Спасибо, это именно то, что мне было нужно. На данный момент даже не потребовалось никаких неявных настроек.