全部博文(1493)
分类: LINUX
2014-03-21 22:50:25
一.qt应用程序全屏显示
方法1:使用函数setWindowFlags()函数
例:yourwidget->setWindowFlags(Qt::window | Qt::FramelessWindowHint);
(第一个Qt::window表示此widget是窗口类型,第二个参数使用无框架就是没有标题,状态栏和边框)
方法2:使用showFullScreen()函数
例:在窗口对象中加入this->showFullScreen();即可,此方法只对顶级窗口有效。
二.qt触摸屏隐藏鼠标指针
方法1:运行加参数-nomouse
鼠标指针是没了,触摸屏也失效了。
方法2:QWidget::setCursor(QCursor(Qt::BlankCursor)
例:this->setCursor(Qt::BlankCurror);
只希望在某个QWidget(或QDialog等)控件上不出现鼠标指针。其他窗口仍会显示鼠标指针。
方法3:main函数中调用QApplication::setOverrideCursor(Qt::BlankCurror);
方法4:main()函数加入 #include
注意:方法2和3只有在动一下触摸屏后鼠标才会消失,第4种在整个程序启动到运行都不会出现鼠标指针。
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启动时也不会显示鼠标指针),
当接上鼠标时,移动一下,鼠标指针就出来了。
当然如果是想支持热拔插自动隐藏鼠标,还得想另外的办法。目前这样已经可以接受了。