Qt开发技术:QDBus介绍、编译与Demo

简介: Qt开发技术:QDBus介绍、编译与Demo

若该文为原创文章,未经允许不得转载

原博主博客地址:https://blog.csdn.net/qq21497936

原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062

本文章博客地址:http://blog.csdn.net/qq21497936/article/details/77834743

各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究

红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...(点击传送门)

Qt开发专栏:开发技术(点击传送门)

 

背景介绍

     这几天,在开发VOI(Virtual OS Infrastructure)登录界面,为后续工作更好的开展和项目维护,将界面逻辑与功能实现分开,因涉及到登录认证镜像快照等后续持续性交互,采用QDBus。

   [题外话:若只是一个简答的登录的界面,可使用QProcess调用脚本,等待脚本返回值来判断登录成功或者失败]

   背景不多说,下面开说,若有不对,请留言指正,欢迎探讨,共同进步,谢谢!!!

 

QDBus基本介绍

   DBus分为两种类型:

  •    system bus(系统总线),用于系统(Linux)和用户程序之间进行通信和消息的传递;
  •    session bus(回话总线),用于桌面(GNOME, KDE等)用户程序之间进行通信。

 

QDBus之服务端

 服务器端分为两步,

   第一步:注册服务;

   第二步:注册对象,导入槽函数

   下面是注册服务器对象的代码:

服务端运行成功后,会在系统DBus总线上注册服务,打开D-Feet软件查看是否注册成功,如下图:

可以看到注册的服务名称,路径,接口名称,方法名称,而DbusHandler类的头文件如下图:

由上图可知,4个槽函数都被注册到DBUS中,这主要是注册对象时使用的参数,如下图:

 

QDBus之客户端

   客户端我们使用了两种方式(共三种)可以与服务器端通讯,分别:

  • 使用QDBusMessage
  • 使用QDBusInterface

客户端的头文件代码如下:

其中尤为重要的是服务器的名称,服务器的地址,方法名称,[参数],具体的实现方式见下图代码:

以上是不带返回参数的客户端代码,这里注意的是如果要写接口名称,则必须按照“local.进程名.对象名”作为接口名称(注册多个对象具有相同的函数名就需要接口了),此次调试的系统为ubuntu16.04;如果不写接口名即为空(“”),则直接匹配接口名。

   下图为带返回参数的客户端代码:

 

QDBus之服务端D-Feet调试

   可能在写服务器的时候,需要模仿客户端发送指令,这时候D-Feet就用上了,运行服务端后,打开D-Feet,D-Feet界面如下图:

双击“Methods”下的方法,即可弹出该方法的对话框,在数据里面直接输入,点击“Execute”即可执行,并可获得方法调用的返回值,如下图:

QDBus之调试信息工具dbus-monitor

   使用该工具,可查看到相关执行的结果以及原因,之前一直使用接口名称连接不上,使用调试信息后知道,接口名称的规则是:“local.进程名.对象名”,使用过程也很简单,直接在Terminal使用命令“dbus-monitor | grep 服务名”,    下图是之前本人调试使用接口名调用失败的原因:

   由上图可知,没有找到接口名“voi.server.QDBusHandler”,使用D-Feet即可知道事实上的接口名如下图:

 

作者白话

   此次使用QDBus结束,后面若有补充会直接紧接此处往后写,同时写博客格式不好调整,故先使用word写完原稿,然后将其截图传上博客。

   若有错误处,请各位批评指正,谢谢!

 

原博主博客地址:https://blog.csdn.net/qq21497936

原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062

本文章博客地址:https://blog.csdn.net/qq21497936/article/details/77834743



相关文章
|
2月前
|
编解码 UED
Qt侧边栏的动态切换:隐藏与显示技术详解
在现代用户界面设计中,侧边栏(Sidebar)是一个常见的组件,它为用户提供了导航和工具面板的功能。在某些应用场景下,我们可能需要动态地隐藏或显示侧边栏,以优化界面布局或提供更灵活的用户体验。本文将分享如何在Qt框架下实现侧边栏的隐藏与呈现,包括技术细节和代码示例。
148 3
|
4月前
|
C++
VS2019编译VTK-9.1.0+Qt5.15.2
本文介绍了在VS2019和Qt 5.15.2环境下编译VTK 9.1.0的过程,包括成功编译无警告和错误的截图、修改的pro文件内容,以及在QML中加入VTK的失败尝试和参考链接。
150 4
|
2月前
|
UED
Qt侧边栏的动态展示:隐藏与呈现技术详解
在现代用户界面设计中,侧边栏(Sidebar)是一个常见的组件,它为用户提供了便捷的导航和操作入口。在Qt框架中,实现侧边栏的隐藏与呈现不仅能够提升应用的美观度,还能增强用户体验。本文将详细介绍如何在Qt中实现侧边栏的动态隐藏与呈现,包括技术要点和代码实现。
110 0
|
4月前
|
C++
vtkdicom0.8_vtk9.2_dcmtk3.6.7_qt6.2编译OK
本文介绍了如何编译整合VTK 9.2、DICOM 0.8、DCMTK 3.6.7和Qt 6.2的步骤,包括安装Qt、CMake配置以及确认相关路径和版本设置。
vtkdicom0.8_vtk9.2_dcmtk3.6.7_qt6.2编译OK
|
4月前
|
Unix 网络虚拟化 C++
VS2022+Qt5.14.2成功编译MITK2022.10
使用VS2022和Qt5.14.2成功编译MITK2022.10的过程,包括编译结果的截图、遇到的编译问题的解决方法、两个重要的注意事项(patch文件格式的修改和ITK-gitclone-lastrun文件的存在),以及参考链接。文中详细描述了如何解决编译过程中遇到的错误C2220和警告C4819,以及如何修改文件编码和尾行格式。
203 1
VS2022+Qt5.14.2成功编译MITK2022.10
|
4月前
编译QCefView+VS2019+QT5.15.2
本文介绍了如何编译QCefView项目,并在VS2019和Qt 5.15.2环境下集成,包括编译结果、要点、cmake部署Qt的方法和相关参考链接。
172 1
编译QCefView+VS2019+QT5.15.2
|
4月前
|
人工智能
三战VS2019编译VTK7.1+Qt5.15.2
本文记录了作者在VS2019环境下编译VTK 7.1与Qt 5.15.2的历程,包括正确配置方法、遇到的编译错误以及解决过程。
|
4月前
|
人工智能 C++
初步编译QT5.15.2+VS2019+VTK8.2.0
本文介绍了在VS2019中编译QT 5.15.2和VTK 8.2.0的过程,包括编译结果、cmake库编译配置和cmake应用配置脚本,以及推荐的参考链接。
197 4
|
4月前
|
计算机视觉
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
这篇文章记录了使用VS2019编译Qt6.2.4、DCMTK3.6.7、VTK9.2.2、ITK5.3和OpenCV4.6.0的过程,包括下载和编译步骤,并提供了遇到编译错误时的解决方案和参考链接。
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
|
4月前
|
C语言 C++ Windows
QT多插件通信框架CTK编译记录
本文记录了编译QT多插件通信框架CTK的过程,包括编译结果截图、部署配置、Log4Qt编译配置、参考链接和拓展资料。文中提供了详细的编译步骤和配置文件示例,以及相关的资源链接。
QT多插件通信框架CTK编译记录