#qt #listview #qml
#qt #listview #qml
Вопрос:
Я хотел бы получить доступ к элементам верхнего и нижнего колонтитулов в QML ListView
способом, аналогичным вызову currentItem
для получения текущего экземпляра делегата, но я не могу понять, как. Я был бы признателен за любой совет.
Комментарии:
1. По какой-либо причине вы не можете получить доступ к
header
иfooter
свойствам так же, как кcurrentItem
свойству? Чего вы пытаетесь достичь?2. Я хотел рассчитать эффективную высоту содержимого ListView, включая динамические верхние / нижние колонтитулы / делегаты.
Ответ №1:
Вы должны назначить элементы верхнего и нижнего колонтитулов некоторой внешней ссылке, как показано ниже:
Window {
property Item listHeaderItem: null
Component {
id: listHeaderComponent
Item {
id: headerItem
width: listView.width; height: 0
Component.onCompleted: rootWindow.listHeaderItem = headerItem
}
}
ListView {
header: listHeaderComponent
}}
Комментарии:
1. Это кажется допустимым методом, хотя и немного неубедительным, поскольку вам нужно назначать элемент каждый раз, когда вы используете компонент ListView. Я добавил свой ответ, чтобы показать метод, который я в конечном итоге использовал.
Ответ №2:
Вы можете получить доступ к объектам верхнего и нижнего колонтитулов с помощью функции, подобной…
if(header)
{
var headerItem = header.createObject(null);
// do stuff with headerItem
headerItem.destroy();
}
if(footer)
{
var footerItem = footer.createObject(null);
// do stuff with footerItem
footerItem.destroy();
}