[Interest] QDBus Dict
Lucas Betschart
lucasbetschart at gmail.com
Sat Jul 7 12:29:38 CEST 2012
2012/7/7 Thiago Macieira <thiago.macieira at intel.com>:
> On sábado, 7 de julho de 2012 09.22.50, Lucas Betschart wrote:
>> Thats my code:
>>
>> bool QUbuntuOne::getThrottlingLimits(){
>> QDBusMessage ret =
>> QDBusCon->call(QDBusMessage::createMethodCall(DESTINATION,"/config","","get_
>> throttling_limits")); if(ret.type() == QDBusMessage::ErrorMessage){
>> qDebug() << "DBus Error:\n" << QDBusCon->lastError().name() <<
>> "\n" << QDBusCon->lastError().message();
>> return (false);
>> }
>> //ret.arguments().t
>> return true;
>> }
>>
>> How can I convert what the QDBusMessage arguments I got in ret to a QMap?
>
> The first variant in the arguments contains something that can be converted to
> your map. Use:
>
> qdbus_cast<QMap<Key, Value> >(ret.arguments().first());
>
>> I also don't understand for what the "Interface" parameter in
>> createMethodCall is. It seems to work well with out this till now (I
>> have only implemented DBus methodes till now, no signals).
>
> The D-Bus specification says that you can make calls to the empty interface and
> this needs to work, calling any method with that name in any interface. If you
> have a specific interface in mind, use it.
>
> --
> Thiago Macieira - thiago.macieira (AT) intel.com
> Software Architect - Intel Open Source Technology Center
> Intel Sweden AB - Registration Number: 556189-6027
> Knarrarnäsgatan 15, 164 40 Kista, Stockholm, Sweden
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>
Thanks for the fast answer.
It still doesn't work.. I know that the value will be an int, but
qdbus_cast<QMap<QString, int > >(ret.arguments().first()); returns a
compiler error.
So I used a QVariant map, which works for the compiler but the result
is useless.
My Code:
QMap<QString, int> test;
QVariantMap test2;
//qdbus_cast<QMap<QString, int > >(ret.arguments().first());
//qDebug() << qdbus_cast<QMap<QString, QVariant >
>(ret.arguments().first());
test2 = qdbus_cast<QVariantMap>(ret.arguments().first());
qDebug() << test2;
qDebug() << test2.value("download");
The output:
type end_dict_entry not a basic type
type end_dict_entry not a basic type
QMap(("download", QVariant(void*, ) ) ( "upload" , QVariant(void*, ) ) )
QVariant(void*, )
Thanks for your help.
More information about the Interest
mailing list