Pull to refresh

Comments 13

Впечатляет, но в Qt есть еще один фреймворк это QtQuick. Я стараюсь использовать QtQuick везде, где нужно сильно кастомезированное UI.
Да, в последнее время стало легко смешивать десктопные виджеты и QML-ные.
Я решал задачи для инженерных приложений, там большие объемы данных нужно отображать, так что производительность — необходимое условие.

Подскажите, содержимое QML контролов можно выводить на печать или экспортировать как изображение в файл?
Теоретически да, это же обычные узлы в графе сцены, но вот добраться до них может быть не очень тривиально.
Да… похоже мульён записей обрабатывать QML будет тяжело.

Еще в QML есть одна проблема (или достоинство) JS — слабо-типизированный язык — компилятор почти не следит за корректностью типов.
Эта же проблема есть в Model/View framework — все данные идут через QVariant — полностью обезличивая их на этапе компиляции.
Мне кажется мильен записей никогда не должна рисоваться. А обработать видимое по зубам qml
Да, само собой рисовать надо только видимые данные.
Обработка данных — это обычно сортировка или фильтрация, где перебираются все данные.

Гонять туда-сюда данные через QVariant и JS — это пока не для инженерных приложений, которыми я занимаюсь.

А вот оживить приложение анимациями используя стандартные Qt items widgets почти невозможно. По крайней мере я не знаю как.
Сортировка и фильтрация — это должна модель делать, т.е. C++, а не QML (который View).
Для этих целей есть QAbstractProxyModel.
В инженерных задачах обычно QAbstractItemModel является обёрткой вокруг структур данных/объектов из предметной области.
Если прокси-модель знает об этих структурах данных, то можно обойтись без перегонки данных через QVariant.
Если производительности не хватает, то можно в прокси-модель засунуть OpenMP
Да, всё верно.

Жалко только, что QAbstractProxyModel слишком «абстрактный».
Если он предназначен для пересортировки и фильтрации исходной модели, почему бы не дать опциональную возможность запоминать перестановку строк и их видимость.

А так, приходится эти маппинги из исходной модели в изменённую каждый раз реализовывать заново (ну или делать свой базовый класс).
Не знал о таком методе, спасибо за информацию.
UFO just landed and posted this here
QML-ный ListView так и делает внутри. Т.е. создает делегатов сколько нужно чтобы влезло в экран (плюс скролл).
Sign up to leave a comment.

Articles