QT qml下DBus的使用例子
Linux中使用DBus作为进程间通信是比较有效的方式,这种RPC方式跟队列比,可以省去处理进程间同步的步骤,QT也已经支持基于DBus的进程间通信,这里举个例子。
首先定义一个接口文件CallHelloItf.h:
然后用命令行由上面文件生成服务端和客户端代码:
服务端代码的文件名为CallHelloAdaptor.cpp、CallHelloAdaptor.h。
DBus服务端项目:
QT += dbus
server.cpp文件:
用qdbusviewer可以查看注册到系统中的DBus服务:
客户端实现:
QT += dbus
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
Window {
width: 640
height: 480
visible: true
title: qsTr(“Hello World”)
Row{
Button{
id: btnSayBey
text: “SayBey”
}
Button{
id: btnSayHello
text: “SayHello”
}
Button{
id: btnSayAbout
text: “SayAbout”
}
}
//组件加载完成执行
Component.onCompleted: {
//关联信号与信号处理函数的方式同QML中的类型
//Qml对象的信号关联到Cpp的槽函数
console.log(‘main: btnSayBey.onClicked.connect(CLIENT.SayBey)’);
btnSayBey.onClicked.connect(CLIENT.SayBey);
console.log(‘main: btnSayHello.onClicked.connect(CLIENT.SayHello)’);
btnSayHello.onClicked.connect(CLIENT.SayHello);
console.log(‘main: btnSayAbout.onClicked.connect(CLIENT.SayAbout)’);
btnSayAbout.onClicked.connect(CLIENT.SayAbout);
}
}