| Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|
Главная » 2015 » Сентябрь » 14 » QtDbus
|
| Два дня отладки - лазанья в кишках QtDbus. 1. Выяснил, как передавать передавать свои типы данных по D-Bus (это не совсем тривиально, здесь хоть кто то объяснил)2. Сделал типа такого
typedef QMap<QString, QVariant> VariantMap;
//---------------------------------------------------------------------------------
Q_DECLARE_METATYPE(VariantMap)
//---------------------------------------------------------------------------------
QDBusArgument &operator << (QDBusArgument &arg, const VariantMap &m);
const QDBusArgument &operator >> (const QDBusArgument &arg, VariantMap &m);
//---------------------------------------------------------------------------------
inline void RegisterVariantMapTypes()
{
qDBusRegisterMetaType<VariantMap>();
}
3. Сервер упорно отказывался принимать аргумент такого типа. При отладке поучалось что такой тип не зарегистрирован. 4. Выяснилось, что регистрируется тип QMap (кот. уже зарегистрирован), а адаптерный класс (QDBusAbstractAdaptor) не может получить id класса по имени "VariantMap".Вылечилось только когда отказался от typedef (сделал наследника от QMap).Вот такие вот грабли с темплейтами C++UPD:вот на что я наступил - bugreports.qt.nokia.com/browse/QTBUG-6833,спасибо wecanstoptrain
|
|
Просмотров: 519 |
Добавил: admin
| Рейтинг: 0.0/0 |
|
| Календарь |
| « Сентябрь 2015 » |
| Пн |
Вт |
Ср |
Чт |
Пт |
Сб |
Вс |
| | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 10 | 11 | 12 | 13 | | 14 | 15 | 16 | 17 | 18 | 19 | 20 | | 21 | 22 | 23 | 24 | 25 | 26 | 27 | | 28 | 29 | 30 | |
|