Мне нужно получить свойство интерфейса DBus, поэтому я сделал interface.property(name)
. Это возвращает QVariant, но карта, которую QVariant может вернуть, равна только QMap<QString, QVariant>
, тогда как мне нужно QMap<QString, QDBusVariant>
. Что мне делать?Свойство Qt DBus преобразование в карту
ответ
Я думаю, что вы ищете для этого метода, как нет QVariant::toQDBusVariant()
метода, по сути, и по праву:
Возвращает сохраненное значение преобразуется в тип шаблона T. Вызов canConvert() к узнать, можно ли преобразовать тип. Если значение не может быть преобразовано, будет возвращено построенное по умолчанию значение.
Если тип T поддерживается QVariant, эта функция ведет себя точно так, как ToString(), toInt() и т.д.
В зависимости от вашего случая использования, то вы либо восстановить карту в один присест, или вы конвертируете его в предпочитаемый вами тип на ходу. В любом случае, вы будете использовать этот механизм, как показано на приведенном выше примере:
QVariant myVariant;
...
QDBusVariant dbusVariant;
if (myVariant.canConvert<QDBusVariant>())
dbusVariant = myVariant.value<QDBusVariant>();
Вы также можете зайти как QDBusVariant пример показывает:
// retrieve the D-Bus variant
QDBusVariant dbusVariant = qvariant_cast<QDBusVariant>(v);
Если вы хотите, чтобы преобразовать QMap
затем
QMap<QString,QVariant> variantMap(initializeVariantMapFunction());
QMap<QString,QDBusVariant> dbusVariantMap;
QMap<QString,QVariant>::const_iterator it;
for (it = variantMap.constBegin() ; it != variantMap.constEnd() ; ++it)
dbusVariantMap.insert(it.key(), qvariant_cast<QDBusVariant>(it.value()));
Но вы могли бы, конечно, оставить variantMap
как есть, и при доступе к значению сделать
QDBusVariant someDBusVariant = qvariant_cast<QDBusVariant>(variantMap.value(key));
Вы можете использовать QVariant::canConvert, чтобы проверить, возможно ли преобразование.
- 1. Компиляция Qt с dbus
- 2. Реализация dbus org.bluez в Qt
- 3. Как вернуть ошибку в dbus с помощью qt-dbus?
- 4. Qt DBus не принимает сигналы
- 5. связь между сервером-клиентом в qt dbus
- 6. C++ Qt DBus нет такого сигнала InterfacesAdded
- 7. Python Dbus: как экспортировать свойство интерфейса
- 8. Преобразование строки в карту?
- 9. Как извлечь возвращаемые данные из QDBusMessage в вызове Qt DBus?
- 10. Scala: преобразование списка в карту
- 11. Неустранимая ошибка при попытке получить свойство DBus с настраиваемым типом
- 12. Qt :: Что нужно включить в конфигурацию для использования dbus?
- 13. Преобразование Java в Qt
- 14. Преобразование объектов JPA в карту
- 15. Преобразование HEALPix в кубическую карту
- 16. Clojure, преобразование коллекции в карту
- 17. Scala - преобразование массива в карту
- 18. преобразование JSON в массиве/карту
- 19. Преобразование Java XML в карту
- 20. JMX: Преобразование AttributeList в карту
- 21. Преобразование изменчивой в неизменную карту
- 22. Elixir - Преобразование Список в карту
- 23. Соединения сеанса dbus: подключение сигналов dbus с слотами qt, как это можно сделать?
- 24. Как зарегистрировать объект dbus с помощью dbus-java?
- 25. Преобразование Multiset на карту
- 26. dbus - undefined ссылка на
- 27. Поддерживает ли двоичный установщик Windows Qt DBus из коробки?
- 28. Qt DBus демаршаллинга, когда посылается как QDBusVariant/QVariant
- 29. Правильно ли этот код подключения сигнала Qt DBus?
- 30. Qt DBus: зарегистрировать объект, который реализует несколько интерфейсов
может быть просто 'qvariant_cast (map.value (ключ))' для каждого значения 'QMap ' при обращении к нему? –
Он наследует его, поэтому я уверен, что актер будет работать. –