问题标签 [qtdbus]

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 回答
1481 浏览

dbus - 如何使用 Qtdbus 在系统总线上公开方法

我想在 Qt Creator 中使用 Qt Dbus 在系统总线上公开我的应用程序的方法。在使用会话总线时,方法会暴露出来,但是使用系统总线我只能看到我注册的服务名称,但没有在它下面暴露的方法。(我在 D-feet 中检查它)我该怎么办?

0 投票
1 回答
1382 浏览

c++ - 如何使用 QtDbus 注册接口和注册方法?

我想在 QtDbus 上注册一个接口和方法。

在 glib Dbus 中,我们有一个方法 g_dbus_register_interface(.. ,.. , .., ..)。

有没有办法使用 QtDbus 做同样的事情?

0 投票
0 回答
454 浏览

qt4 - 为 Linux/MIPS 交叉编译 QtDbus 应用程序

我正在尝试为 Linux/MIPS 设备交叉编译 dbus-chat 示例(包含在 qt-everywhere-opensource-src-4.6.2 中)。我在构建时遇到以下错误:

.../qt-everywhere-opensource-src-4.6.2/lib/libQtCore.so:未定义对“inotify_init@GLIBC_2.4”的引用

.../qt-everywhere-opensource-src-4.6.2/lib/libQtGui.so:未定义的对 `__floatundisf@GCC_4.2.0' 的引用

.../qt-everywhere-opensource-src-4.6.2/lib/libQtCore.so:未定义对“inotify_rm_watch@GLIBC_2.4”的引用

.../qt-everywhere-opensource-src-4.6.2/lib/libQtCore.so:未定义对“inotify_add_watch@GLIBC_2.4”的引用

.../qt-everywhere-opensource-src-4.6.2/lib/libQtCore.so:未定义的对 `__floatundidf@GCC_4.2.0' 的引用

collect2: ld 返回 1 个退出状态

我使用 mipsel-linux-gcc-3.4.4 和 dbus-1.0.0 为 QT 交叉编译 dbus 库。我不确定缺少哪个库或者可能是 dbus 版本不兼容。我能够编译简单的 dbus 应用程序。

0 投票
1 回答
1283 浏览

c++ - 如何将复杂数据打包到 QtDBus 回复中?

我必须在 Qt 中实现一个 DBus 服务,该服务必须返回一个遵循给定规范的相当复杂的数据。数据本质上是一系列经过测试的映射、数组、结构和其他变体。

我找不到一种方便的方法将所有这些都打包到我的方法的回复中。看来我应该可以为此使用该QDBusArgument课程。例如,要创建一个字符串数组,我应该可以这样做:

但这不起作用。看来我需要煞费苦心地QList手动构造 s 的变体。肯定有更好的方法吗?

0 投票
1 回答
580 浏览

qt - 将同步 qtdbus 调用转换为异步所需的设计建议

到目前为止,我项目中的应用程序使用同步调用通过 qtdbus 进行通信。但是,我现在需要将其中一些调用转换为异步调用。为此,我选择使用 qtdbus QDBusAbstractInterface::callWithCallback 中提供的这个 API 但问题是当前的实现有这些 qtdbus 同步调用分散在代码中的很多地方,并且遵循这些同步调用的代码片段假定控制只有当前面的呼叫已成功服务并获得回复时才会到达他们。当调用更改为异步时,情况将不再如此。此外,调用是在不同的上下文中进行的,所以我需要在每次调用 qtdbus 之前维护系统的状态,以便在收到回复时知道该怎么做。真的有机会以某种方式将调用转换为异步,而不会大幅破坏当前代码的结构吗?我能想到的一种方法是使用 FSM 模式。任何提示或设计建议将不胜感激。谢谢!

0 投票
1 回答
2845 浏览

python - 如何使用带有 PyQt4 的 QDBusAbstractAdaptor 在 DBus 上公开方法和属性?

我正在尝试使用 PyQt4 在 DBus 上运行一些基本代码,特别是 QtDBus。我正在使用 Python3 版本的 PyQt4。我已经得到了我想在 Qt (c++) 上运行的代码,但我想只使用 Python 来运行类似的代码。我想在 DBus 上公开方法、信号/插槽和属性,以供其他 Python 代码调用。

在 Qt 中,您使用 Q_CLASSINFO 宏/函数来进行 DBus 内省。虽然我引入了 Q_CLASSINFO 方法,但我无法让它产生相同类型的功能。据我所知,关于 Q_CLASSINFO 方法的文档为零,所以我不确定是否还有其他方法。使用 D-Feet 我可以清楚地看到没有自动公开任何方法,所以我有点卡住了。

这是我到目前为止所拥有的。

虽然我真的很喜欢在 C++ 中使用 QtDBus,因为我想如何构建我的这个大型项目,但我确实需要通过 DBus 访问的对象用 Python3 编写。

0 投票
1 回答
269 浏览

pyqt4 - 在 PyQt4 中处理 QDBusPendingCallWatcher 结果?

我想使用 PyQt4.QtDBus 对远程 D-Bus 服务中的函数进行非阻塞调用。改编自 Qt 的 C++ 文档,我想出了以下测试程序:

它似乎工作。当我运行它时,它会打印:

问题是,我不知道如何将 转换为可以从中提取结果的QDBusPendingCallWatcher东西(例如)。C++ 文档QDBusMessage中的示例执行此操作:

谁能告诉我如何将 C++ 插槽转换为适用于 PyQt4 的东西?(我将 PyQt4.9.1 与 Qt 4.8.1 一起使用。)

0 投票
1 回答
945 浏览

qtdbus - 如何使用 qt-dbus 将错误返回到 dbus?

我正在使用 qt-dbus 从我的软件中公开一些 API。

我通过 qdbusxml2cpp 将带有接口声明的 foo.xml 转换为 foo_adaptor.cpp 和 foo_adaptor.h 持有 FooAdaptor 类,然后通过在 Foo 的构造函数中调用 new FooAdaptor(this) 将真正的 Foo 类绑定到 FooAdaptor。

所以,它起作用了:当我通过 dbus-send 向我的应用程序发送消息时,调用了 Foo 方法。

对于我的软件的特定版本,我想禁用一些方法。我需要以某种方式通知调用者,某些方法调用实际上是不允许的,并且什么都不做/没有任何意义。是否有任何函数可以调用/抛出异常来执行此操作?

0 投票
1 回答
815 浏览

qt - QtDBus 链接错误

我用 WinDBus 在 Windows 上构建了 Qt。Qt 本身构建正常,但 QDbus 示例构建失败并显示消息

文件夹E:\qt\4.6.4\msvc2008\lib包含 QtDBus4.dll QtDBus4.lib QtDBusd4.dll 和 QtDBusd4.lib。全部包含'staticMetaObject@QDBusAbstractAdaptor@@2UQMetaObject@@B'字符串。

如何解决?

事先感谢,伊利亚。

UPD: 所有 .PRO 文件都来自 DBus 示例,我没有更改任何内容。例如:

UPD2:

QtCreator 生成的命令行:

我构建 Qt 的选项:

0 投票
1 回答
1389 浏览

qt - 如何正确使用 QDBusPendingCallWatcher?

我正在尝试使用QDBusPendingCallWatcher来观看异步呼叫。一些示例代码如下:

和处理函数:

我的问题是:

  1. 看起来内部QDBusPendingCallWatcher使用了共享数据指针,不手动删除watcher指针是否安全?只是离开范围并忘记它?

  2. 如果我可以让 pendingcall 的智能指针完成所有的技巧,我可以QDBusPendingCallWatcher在我的类中只使用一个指针来观察所有的异步调用吗?像这样:

    这会造成灾难吗?或者我应该为每个调用使用多个指针?

谢谢!