Spec-Zone.ru › Qt

Система типов Qt D-Bus

D-Bus имеет расширяемую систему типов, основанную на нескольких примитивах и композиции примитивов в массивах и структурах. Qt D-Bus реализует интерфейс к этой системе типов через класс QDBusArgument, позволяя пользовательским программам отправлять и получать практически все типы C++ по шине.

Примитивные типы

Примитивные типы поддерживаются напрямую классом QDBusArgument и не требуют специальной настройки для отправки или получения. Они перечислены ниже вместе с соответствующим классом C++:

Тип Qt Эквивалентный тип D-Bus
uchar BYTE
bool BOOLEAN
short INT16
ushort UINT16
int INT32
uint UINT32
qlonglong INT64
qulonglong UINT64
double DOUBLE
QString STRING
QDBusVariant VARIANT
QDBusObjectPath OBJECT_PATH
QDBusSignature SIGNATURE

Помимо примитивных типов, QDBusArgument также напрямую поддерживает два не примитивных типа из-за их широкого использования в приложениях Qt: QStringList и QByteArray.

Составные типы

D-Bus определяет три типа агрегаций примитивных типов, которые позволяют создавать составные типы. Это ARRAY, STRUCT и отображения/словари.

Массивы представляют собой наборы одного или нескольких элементов одного типа, в то время как структуры — это набор фиксированного числа элементов, каждый из которых может быть любого типа. Отображения или словари реализуются как массивы пар элементов, так что в одном отображении может быть ноль или несколько элементов.

Расширение системы типов

Для использования собственного типа с Qt D-Bus, тип должен быть объявлен как метатип Qt с помощью макроса Q_DECLARE_METATYPE() и зарегистрирован с помощью функции qDBusRegisterMetaType(). Операторы потоковой передачи operator>> и operator<< будут автоматически найдены системой регистрации.

Qt D-Bus предоставляет специализации шаблонов для массивов и отображений для использования с контейнерными классами Qt, такими как QMap и QList, поэтому нет необходимости писать функции операторов потоковой передачи для них. Для других типов, и особенно для типов, реализующих структуры, операторы должны быть реализованы явно.

Примеры использования структур, массивов и отображений см. в документации для QDBusArgument.

Использование системы типов

Все типы Qt D-Bus (примитивные и пользовательские) могут использоваться для отправки и получения сообщений всех типов по шине.

Предупреждение: Нельзя использовать никакие типы, которые не указаны в списке выше, включая псевдонимы указанных типов. Это также относится к QList<QVariant> и QMap<QString,QVariant>.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qdbustypesystem.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API