Расширяемые точки C++ в Qt Quick
Все приложения QML могут быть расширены с помощью C++ для использования дополнительных функций, реализованных на C++ или для предоставления C++-плагина QML. Эта тема расширения 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 C++ 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.11/qtquick-cppextensionpoints.html