Comments 10
Сразу скажу, что модель должна все равно быть в виде списка. Передать туда настоящую C++-модель таблицы, т.е. Производный класс от QAbstractTableModel не получится — будет видна только первая колонка.
А какой тогда смысл в TableVIew?
Смысл в том, что можно отображать данные в виде таблицы. Я немного дополнил статью:
Один элемент модели соответствует строке таблицы, а данные для столбцов берутся из ролей элемента.
Это по сути то же самое, что и модель-список с разными ролями для одного элемента, только тут еще и костыль для преобразования из столбцов в роли. Если модель с данными строго в виде таблицы и ее менять нежелательно, на мой взгляд, лучше написать прокси-модель, которая будет переводить таблицу в список.
Радует то, что производительность в QtQuick 2 выросла настолько, что теперь без шуток его можно использовать в продакшене. Летает даже на андроиде :)
Интересна подкапотная реализация работы с делегатами, то есть как все работает under the hood, так сказать. Поясню. Портирую настольное приложение на андроид, QML + C++. По некоторым причинам пришлось отказаться от ListView и пришлось изобретать свой велосипед соблюдая принципы MVC. Отрисовка данных в делегаты сделана практически в лоб, для каждого элемента в списке создается инстанс делегата и свойства связываются с элементом модели, все это на JS. Как думаете, по какому принципу это реализовано в ListView, так же либо есть код на C++ отвечающий за это?
ListView написан на плюсах. Если интересно, реализацию можно посмотреть в qtdeclarative/src/quick/items/qquicklistview. Вообще, из стандартных компонентов на QML написаны только QtQuick Controls, да и то частично.

пришлось изобретать свой велосипед

Использовали Column/Row + Repeater + Flickable или какой-то другой способ?
Да, конечно, именно с этого и начинал. Довольно сложные делегаты используются (с точки зрения логики), плюс нужны особые жесты, а Flickable не дает все что нужно. С велосипедом код вышел проще, и моя отрисовка через делегаты на чистом JS сносно работает, но хотелось бы найти способ оптимальнее, думал может сталкивались. Спасибо за наводку
Only those users with full accounts are able to leave comments. Log in, please.