Точки расширения C++ для Qt Quick
Все приложения QML могут быть расширены на C++ для использования дополнительной функциональности, реализованной на C++ коде, или для создания плагина QML на основе C++. Эта тема расширения QML из C++ освещается в документации Интеграция QML и C++.
Кроме того, модуль Qt Quick предоставляет несколько точек расширения и интеграции для разработчиков C++, специфичных для этого модуля. В частности, он позволяет разработчикам C++ создавать и регистрировать пользовательские типы, производные от QQuickItem, которые могут быть отображены Qt Quick. Он также предоставляет несколько классов, связанных с деревом сцены, которые позволяют разработчикам определять собственные графические примитивы.
Пользовательские типы, производные от QQuickItem
Хотя модуль Qt Quick уже предоставляет богатую библиотеку типов визуальных элементов для использования в приложении QML, некоторые разработчики могут захотеть определить свои собственные типы, производные от элементов, на C++ и предоставить их системе типов QML. Самый простой способ сделать это — наследовать от QQuickItem, который является базовым типом для всех визуальных типов в модуле Qt Quick. Подробнее см. в документации QQuickItem.
Классы, связанные с деревом сцены
Qt Quick 2 использует специальное дерево сцены, основанное на OpenGL ES 2.0 или OpenGL 2.0 для отрисовки. Использование дерева сцены для графики вместо традиционных императивных систем отрисовки (QPainter и аналогичных) означает, что сцену, подлежащую отрисовке, можно сохранить между кадрами, а весь набор примитивов для отрисовки известен перед началом отрисовки. Это открывает множество возможностей для оптимизации, таких как объединение вызовов отрисовки OpenGL для минимизации изменений состояния или отбрасывание скрытых примитивов.
API Qt Quick на C++ предоставляет различные классы для создания пользовательских узлов на C++.
Для получения подробностей см. документацию Дерево сцены Qt Quick.
Поддержка пиксельных изображений и многопоточной загрузки изображений
Хотя движок QML позволяет приложениям QML загружать изображения из файловой системы или сетевых ресурсов, некоторые приложения могут потребовать дополнительной возможности загрузки изображений из C++-процессов. Это можно реализовать с помощью класса QQuickImageProvider, который предоставляет поддержку загрузки пиксельных изображений и многопоточных запросов на загрузку изображений для приложений QML. Любое приложение QML, запрашивающее изображение через специальную схему URL "image:", будет перенаправлено к соответствующему поставщику изображений для загрузки изображения.
Для получения дополнительной информации см. документацию QQuickImageProvider.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qtquick-cppextensionpoints.html