http://blog.csdn.net/lxj_com2006/article/details/6678390 网上搜索“qt 隐藏鼠标”,大概有以下几种方法,总结一下: 1.编译Qt库的时候添加编译选项QT_NO_CURSOR,这样cursor相关的代码统统不会被编译进去,自然鼠标光标也不会出现在程序中。 这样是彻底不能使用鼠标了,很不方便调试,产品开发阶段、维护,使用鼠标可带来极大方便。 所以此方法只适合简单界面应用,根本不需要鼠标产品。
2.只希望在某个QWidget下不出现鼠标光标,则只要对这个widget调用 QWidget::setCursor(QCursor(Qt::BlankCursor)),其它的窗口仍将出现鼠标。 在main函数中,实例化了APPLICATION后,调用 QApplication::setOverrideCursor(Qt::BlankCursor); 任一控件下显示与关闭鼠标
this->setCursor(Qt::BlankCursor); //隐藏鼠标 this->setCursor(Qt::ArrowCursor); //显示正常鼠标 this改为需要隐藏鼠标的部件,就可以令当鼠标移动到该部件时候,效果生效。
调用下面函数 QWSServer::setCursorVisible(false);
在运行时候加个参数就轻松搞定 ./program -qws -nomouse
我试好像都不行,而且开机qt启动时鼠标仍然再,不爽。
3.移动鼠标到屏幕右下角(看不见),简单实用,但是需要修改qt库,目前还没有找到更好的方法: 讲一下为什么要隐藏鼠标:做为一般产品很少使用鼠标,都会用小键盘或触摸屏代替,但是做为调试,维护使用鼠标比其它方式更为方便, 在产品发布时,本身产品没有鼠标,但是qt加入鼠标支持后会在屏幕中心画一个鼠标指针(不管有没有接鼠标),极大的影响了界面美观,所以在没有鼠标时, 不显示鼠标,接上鼠标后显示鼠标。
现在有了思路:鼠标是qt去画出来的,在启动qt时通过环境变量export QWS_MOUSE_PROTO="TPanel:/dev/input/event0 USB:/dev/input/mice", 传入了鼠标设备文件(触摸屏,鼠标USB:/dev/input/mice),qt会实时读取此设备文件,获取相关事件再处理并不断的重画鼠标。
通过看qt源码,设置隐藏鼠标,其实也是画一个空鼠标指针: if ( !haveviscurs || !curs ) curs = QWSCursor::systemCursor(BlankCursor); 如果通过隐藏鼠标的方法去实现改动的地方比较多,更为简单的办法是: 找到qt2/src/kernel/qwscursor_qws.cpp文件initializeCursor函数替换蓝色部分: void QWSServer::initializeCursor() { // setup system cursors #ifndef QT_NO_QWS_CURSOR // qt_screen->initCursor(sharedram + ramlen,TRUE);
// default cursor cursor = 0; setCursor(QWSCursor::systemCursor(ArrowCursor)); #endif #if 0//modify by lxj 2011.08.11 setMouse(QPoint(swidth/2, sheight/2), 0); #else setMouse(QPoint(swidth, sheight), 0); #endif }
初始化时将鼠标移动到屏幕右下角,看不见,这样不管有没有鼠标,都不显示鼠标指针(qt启动时也不会显示鼠标指针), 当接上鼠标时,移动一下,鼠标指针就出来了。 当然如果是想支持热拔插自动隐藏鼠标,还得想另外的办法。目前这样已经可以接受了。
|