UOS系统下如何对一个打印任务进行监控呢?
首先,UOS系统是支持这个功能。比如说我们打印一个任务后,UOS自带的打印管理器是能知道打印任务的状态的:
经过研究,最终发现了他的监控原理。
还得是DBus
没错,还是得通过DBus来实现打印任务监控。
话不多说,直接上代码:
#define SERVICE_INTERFACE_NAME "com.deepin.print.helper"
#define SERVICE_INTERFACE_PATH "/com/deepin/print/helper"
if (!QDBusConnection::sessionBus().connect(SERVICE_INTERFACE_NAME,
SERVICE_INTERFACE_PATH,
SERVICE_INTERFACE_NAME,
"signalJobStateChanged",
&listener,
SLOT(slJobChanged(QDBusMessage)))) {
qWarning() << "connect to dbus signal(signalJobStateChanged) failed";
}
这一段代码的意思是连接dbus的打印消息与槽函数,成功之后,才能接收系统的消息。
其中的 listener是自己写的一个监控对象,继承自QEventLoop。其槽函数可以这么写: