背景:我正在开发一个有点大的基于 Qt 的 GUI,它处理所有用户与触摸屏的交互。该程序的设计使得用户无需访问命令提示符即可执行任何操作,包括重新校准触摸屏。我写了一个模仿 tslib 的ts_calibrate实用程序,它作为 a 运行QWidget并且可以修改 .tslib 的校准文件/etc/pointercal。
但是,虽然我可以修改校准文件,但在我关闭并重新启动程序之前,似乎不会应用对校准的更改。我已经编写了一个可以处理重新打开程序的脚本,但是我想找到一种更优雅的方法来执行此操作,以便将用户的麻烦保持在最低限度。
简单地说, Qt 的一个类中是否有一个函数可以在不重新启动应用程序的情况下即时重新加载 tslib 的校准文件?我查看了QWSServer 类参考,但没有找到任何看起来像我想要的那样。
事实证明,无需重新启动应用程序即可重新加载驱动程序。为此,您可以使用QWSServer 类中的方法关闭并重新打开指针设备,如下所示:
#include <QWSServer>
...
QWSServer::instance()->closeMouse();
QWSServer::instance()->openMouse();
Run Code Online (Sandbox Code Playgroud)
这将导致重新加载 tslib 的校准文件。例如,如果您以错误的校准启动程序,在程序运行时更正触摸屏的校准文件,然后调用这些方法,指针将调整到新的校准。