为什么 QDBus 抱怨类型错误?
Why does QDBus complains about wrong type?
以下代码片段有什么问题?
我不断收到错误消息
Unexpected reply signature: got "a{sa{sv}}", expected "" (QMap<QString,QVariantMap>)
QDBusInterface connIface(
NM_DBUS_SERVICE,
"/org/freedesktop/NetworkManager/Settings/1",
NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
QDBusConnection::systemBus());
QDBusReply<QMap<QString, QMap<QString, QVariant>> > settingsResult = connIface.call("GetSettings");
我真的不明白,对我来说似乎完全没问题。这可能与编译器/header-versions 有某种关系吗?
您必须先注册预期的响应!
在我的情况下就像
#include <QtDBus/QDBusMetaType>
// ...
typedef QMap<QString, QMap<QString, QVariant> > ConnectionDetails;
Q_DECLARE_METATYPE(ConnectionDetails)
和
int main() {
qDBusRegisterMetaType<ConnectionDetails>();
// ...
}
以下代码片段有什么问题? 我不断收到错误消息
Unexpected reply signature: got "a{sa{sv}}", expected "" (QMap<QString,QVariantMap>)
QDBusInterface connIface(
NM_DBUS_SERVICE,
"/org/freedesktop/NetworkManager/Settings/1",
NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
QDBusConnection::systemBus());
QDBusReply<QMap<QString, QMap<QString, QVariant>> > settingsResult = connIface.call("GetSettings");
我真的不明白,对我来说似乎完全没问题。这可能与编译器/header-versions 有某种关系吗?
您必须先注册预期的响应!
在我的情况下就像
#include <QtDBus/QDBusMetaType>
// ...
typedef QMap<QString, QMap<QString, QVariant> > ConnectionDetails;
Q_DECLARE_METATYPE(ConnectionDetails)
和
int main() {
qDBusRegisterMetaType<ConnectionDetails>();
// ...
}