标题:Qt/e中鼠标设备分析
作者:numen
日期:2010-04-08 21:40
内容:
原文地址:
http://www.cnblogs.com/baizx/archive/2010/04/08/1707784.html
鼠标设备在Qt中表现为QWSMouseHandler的实例,QWSMouseHandler是一个虚基类,不能直接实例化,需要根据设备不同,重新实现其相应的虚函数。然后注册到QMouseDriverFactory,这样Qt在系统初始化载入相应的驱动,对鼠标设备进行管理。
Qt中鼠标驱动分为预置和插件两种。其中预置的是Qt为常见的鼠标设备提供了默认的驱动,比如标准的Pc Mouse,为开发程序而提供的qvfbmouse,以及支持触摸屏的tslib鼠标等,Qt预置支持的所有鼠标设备可以见下图,是通过Eclipse工具得到的,通过名字我们可以判断出大多数对应的鼠标设备,详细情况可以参考Qt-Embedded-Linux 4.5.0 的官方帮助文档。由于eclipse没有配置好,因此显示有点问题,每个class都是显示了两遍。

如果要使用这些设备就直接设置环境变量QWS_MOUSE_PROTO既可以。如果是Qt预置不支持的鼠标设备,那么可以通过Qt的插件系统加入到Qt中,同样设置QWS_MOUSE_PROTO环境变量即可。QWS_MOUSE_PROTO环境变量的设置可以通过如下方法:
export QWS_MOUSE_PROTO="tslib:/dev/ts"
其中参数是以:分割,第一个参数tslib指明要使用哪一个鼠标驱动,第二个参数指明了驱动对应的鼠标设备名字。
QWSMouseHandler的声明如下:
class Q_GUI_EXPORT QWSMouseHandler
{
public:
explicit QWSMouseHandler(const QString &driver = QString(),
const QString &device = QString());
virtual ~QWSMouseHandler();
virtual void clearCalibration() {}
virtual void calibrate(const QWSPointerCalibrationData *) {}
virtual void getCalibration(QWSPointerCalibrationData *) const {}
virtual void resume() = 0;
virtual void suspend() = 0;
void limitToScreen(QPoint &pt);
..