问题标签 [qdbus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
864 浏览

dbus - qdbus 多个接口在同一个对象路径中

我需要知道如何使用 dbus 服务器中的 QDbus 绑定在服务下的同一对象路径中公开多个接口。我使用 qdbusxml2cpp 来生成适配器类。下面的结构可以清楚地说明问题。

如果可能,请通过提供示例代码来帮助我。

0 投票
1 回答
1864 浏览

dbus - 为 Qt D-Bus 自省定义 Enum 自定义类型

我正在使用自定义类型为 Enum 的 QDBUS。谷歌搜索后,我发现下面的链接解释了 QDBUS 自定义类型的编组。

http://techbase.kde.org/Development/Tutorials/D-Bus/CustomTypes#Adventurous_serialization_of_enumerations

这没有解释要在 QTDBUS interospection xml 中指定的注释以使用 qdbusxml2cpp 生成代理。

如何在 QTDBUS interospection xml 中添加枚举注释?

如果可能,请用一些示例代码进行解释。

0 投票
1 回答
1709 浏览

windows - QtService 应用程序在作为服务运行时无法连接到系统总线

我已经用集成的dbus for windows重新编译了Qt 。

此外,我实现了QtService一个在系统总线上注册服务和对象的应用程序,如下所示:

现在,当我使用-e参数运行服务应用程序(作为常规应用程序运行)时,它工作正常,dbus-monitor并且qdbus --system向我显示注册的服务和对象。

但是,当我将应用程序作为 Windows 服务运行时,它不会在系统总线上注册任何内容。

调试服务给了我错误信息

未连接到 D-Bus 服务器

调用时registerService(...)registerObject(...).

我已经设置了环境变量:

我的 system.conf 文件:

此外,我com.mycompany.Configuration.conf在 system.d 文件夹中有一个文件:

Windows 服务本身称为 com.mycompany.Configuration 并作为本地系统帐户执行。

此外,dbus 详细输出显示当我的 Windows 服务启动时发生了一些事情:

我真的不知道问题可能是什么,并希望得到任何帮助。

编辑: 这个似乎有同样的问题:http ://comments.gmane.org/gmane.comp.freedesktop.dbus/14895

0 投票
7 回答
23205 浏览

shell - 从命令行更改 konsole 选项卡标题并使其持久化?

如何更改 konsole 选项卡标题?默认情况下,它设置为%u : %n,因此它总是自动更改。

我可以设置它:

但是,一旦您在控制台中运行某些东西,它就会变回%u : %n. 当然。我可以将其设置%w为告诉它将标题设置为“由 shell 设置的窗口标题”,但稍后(如果我没有明确设置它),它将为空。(除非我设置它,否则每个新标签都是空的。)

问题是如何使其持久化(或如何通过命令行切换配置文件)?我可以制作另一个标题格式设置为 的配置文件%w,然后在设置自定义标题之前切换到该配置文件。

在此处输入图像描述

在此处输入图像描述

编辑:我想我找到了答案

qdbus org.kde.konsole $KONSOLE_DBUS_SESSION setTabTitleFormat 0 "" qdbus org.kde.konsole $KONSOLE_DBUS_SESSION setTitle 0 "我的标题"

0 投票
3 回答
8502 浏览

c++ - 如何在 Qt DBus 调用中从 QDBusMessage 中提取返回的数据?

我正在尝试使用 Qt 的 QDBus 类库调用 WPA 请求者的 DBus 接口。特别是,我正在尝试使用“Get”属性调用来检索“Interfaces”属性值。

“Get”的 DBus 规范(通过自省)是:

看起来很简单。两个字符串输入和输出是一个变体(这些是 DBus 类型)。对于“接口”属性,我期望变体是对象路径数组(DBus 类型“ao”)。

QDBusInterface::call()用来调用 DBus 方法,它返回 a QDBusMessage,但我不知道如何从中提取我的数据。

QDBusMessage::arguments()返回一个QList<QVariant>。我已经尝试过对这个列表中的项目进行各种转换,以试图找到我的对象路径数组,但我似乎最终得到了一个空字符串。

QVariant::type()似乎它应该有所帮助,但它似乎只返回 type QDBusMessage,这显然是错误的。例如:

印刷:

如何提取实际的消息数据?

0 投票
0 回答
849 浏览

qt - qdbus - 无法使用 struct 参数连接到 dbus 信号

我正在尝试连接到 amarok d-bus 信号 StatusChange(参考:https ://xmms2.org/wiki/MPRIS#StatusChange )。接口和结构都可以,因为我可以在同一个接口中连接到简单的信号 CapsChange(int) 并且可以通过 GetStatus dbus 方法获取状态,所以这个 marshall 结构是可以的:

但是当调用时:

我收到消息:

Object::connect: 没有这样的信号 org::freedesktop::MediaPlayer::StatusChange(AmarokStatus)

我尝试过使用 SIGNAL(StatusChange(struct)) 和 SIGNAL(StatusChange(QDbusargument)) 和其他类型,但消息相同

D-Feet 是说 StatusChange 的定义是:StatusChange(Struct of (Int32, Int32, Int32, Int32)),与 dbus-monitor 相同。信号 TrackChange(结构数组)也存在同样的问题。所以我肯定在用 connect() 方法搞砸了。

0 投票
3 回答
1716 浏览

c++ - Qt C++ BlueZ 5 QDbus 库

在 BlueZ 5 中,DBus API 发生了很大变化。我之前有一个基于此的 BlueZ 4 的工作 QDbus 控制器库:https ://gitorious.org/qt-bluez-demos/

我一直在谷歌搜索,找不到任何现有的起点来将我的 BlueZ 4 库转换为 BlueZ 5。

注意:我使用的是 Qt 4.8,但似乎 Qt 5.0 有一些 QBluetooth 命名空间,但它还没有针对 BlueZ 5 进行更新:

该库也仅限 BlueZ 4:

任何人都可以指出一些现有的代码吗?谢谢!

0 投票
1 回答
4710 浏览

c++ - qdbusxml2cpp unknown type

While using the qdbusxml2cpp program to convert the following xml to a Qt Class, I am getting this error:

D-Feet description:

enter image description here

XML:

From this website ( http://techbase.kde.org/Development/Tutorials/D-Bus/CustomTypes ) I understand that I need to add an annotation to the XML for the tool to work properly.

Here is what I have so far:

However, I'm not sure what the annotation should be for a{oa{sa{sv}}}, can someone please help me understand? Thanks!

0 投票
3 回答
555 浏览

c++ - 如何解决此“从不同大小的类型转换为指针”警告?

我有两个通过 D-Bus 进行通信的程序。在其中一个函数中,有一个接受两个参数的函数,const char* dataint size另一个函数中,我有一个返回 type 值的函数unsigned char。我在这样的第一个程序中放置了一个函数调用,function((char*)program2->function().value(), 1)但是我得到了从不同大小的整数 [-Wint-to-pointer-cast] 转换为指针的警告。我应该如何解决这个警告?我也在使用 Qt 库。

编辑:

实际上在接受 的函数中const char*int我将数据附加到QByteArray接受const char*的 a 和 Qt 提供的构造函数中的类型大小,int另一个程序应该返回 0-255 范围内的数字,因此unsinged char. 如果我所做的是错误的,那么获得预期结果的最佳方法是什么?

还调用 program2->function 调用以下内容:

这个类有一个名为 value() 的函数,它调用:

注意:我这个问题的主要目的是找到一种方法来创建对调用代理类中定义的函数的返回结果的引用,而不是如何将其转换为可以接受的东西以创建 aQByteArray所以请停止添加不相关的标签,例如QByteArrayQtCore等等。

0 投票
1 回答
446 浏览

qt - QDBus 接口监视 - g_bus_watch_name

Qt 是否公开了一种方法来监视 DBus 接口,类似于g_bus_watch_name?我想知道应用程序何时启动或关闭,观察它的 DBus 接口。