У меня есть ListView (родительский), который использует ListView (дочерние элементы) в качестве делегата, поэтому каждый родительский элемент является listView некоторых элементов.
Чтобы использовать типичный пример, родительский список может быть списком размеров (L, M и S), а каждый дочерний список будет списком животных данного размера (L животных, M животных, S животные).
В обоих списках используется пользовательская модель, которая наследуется от QAbstractListModel. Но модель дочерних списков, используемая в представлении, является пользовательской моделью, которая наследуется от QSortFilterProxyModel, чтобы иметь функции фильтрации.
Элементы родительского списка работают как «размеры» для детей, поэтому они используются как разделы. Представление отображается как:
БОЛЬШОЙ: - large_animal_1 - large_animal_2
MEDIUM: - medium_animal_1 - ...
Что мне нужно, так это в том случае, если данный раздел не имеет элементы после фильтрации, раздел НЕ должен отображаться. В текущем представлении, когда после фильтрации нет «животных», появляется заголовок раздела:
LARGE:
MEDIUM: - medium_animal_1 - ...
Код QML :
ListView {
id: headers
anchors.fill: parent
clip: true
boundsBehavior: Flickable.StopAtBounds
model: _headersModel
delegate:
Item {
width: parent.width
height: some_value
ListView {
id: items_of_same_category
anchors.fill: parent
spacing: 5
clip: true
interactive: false
model: proxy_model
delegate: component_delegate
}
}
section.property: "category_value"
section.criteria: ViewSection.FullString
section.delegate: header_delegate
section.labelPositioning: ViewSection.InlineLabels | ViewSection.CurrentLabelAtStart
}