如何在qdbus命令行工具中传递QVariantMap类型参数?
解决qdbus传递QVariantMap参数给KRunner CommandLine方法的报错问题
当调用KRunner的org.kde.KDBusService.CommandLine方法时,直接传递{}作为QVariantMap类型参数会触发Sorry, can't pass arg of type 'QVariantMap'.错误,这是因为qdbus工具对QVariantMap的参数格式有特定要求,而非JSON格式。
正确的参数传递方式
- 传递空的platform-data参数
如果不需要设置任何平台数据,直接传空字符串即可:
qdbus org.kde.krunner /org/kde/krunner org.kde.KDBusService.CommandLine "ls" "/" ""
- 传递带键值对的platform-data参数
如果需要传递实际的平台数据,使用键:值的格式,多个键值对用逗号分隔:
qdbus org.kde.krunner /org/kde/krunner org.kde.KDBusService.CommandLine "ls" "/" "DesktopName:KDE,WindowId:12345"
原因说明
qdbus工具不支持JSON格式的{}来表示QVariantMap,它要求该类型参数使用键值对字符串:空映射对应空字符串,非空映射则用键:值组合,多组之间用逗号分隔。
内容的提问来源于stack exchange,提问作者Hadock
相关产品推荐
相关产品推荐

