要点:QDBUS通信机制的作为服务端的使用分为3个步骤:
if(!QDBusConnection::sessionBus().isConnected()) //1建立与DBUS的链接
if(QDBusConnection::sessionBus().registerService( //2注册服务
“hit.test.middleware”))
MiddleWareMain w;
QDBusConnection::sessionBus().registerObject(“/”, &w, QDBusConnection::ExportAllSlots); //3注册服务对象
分析:
1, 采用一般新建项目可以正确注册成功;
试图:改此项目,刚开始没问题,过了几次之后文件一次性添加很多(基本添加完毕),项目中服务对象就无法注册成功。
2, 在此项目中新建一个类文件,这个类的对象可以正确注册服务,但是不稳定,用相同的方法再写一个文件可能不能成功注册,并没有发现这两种方法有什么区别。
解决方案:
#ifdef Q_OS_LINUX
public slots:
int xxxx();
#endif
这对宏定义说明不能将所要调用的槽包括进来,我也不知道原因,包含起来就不能其多提供的槽函数