Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4263566
  • 博文数量: 776
  • 博客积分: 13014
  • 博客等级: 上将
  • 技术积分: 10391
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-22 17:00
文章分类

全部博文(776)

文章存档

2015年(55)

2014年(43)

2013年(147)

2012年(20)

2011年(82)

2010年(429)

分类: LINUX

2014-03-20 22:33:36

一.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 ,实例化QApplication后,添加QWSServer::setCursorVisible(false);

注意:方法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启动时也不会显示鼠标指针),

当接上鼠标时,移动一下,鼠标指针就出来了。

当然如果是想支持热拔插自动隐藏鼠标,还得想另外的办法。目前这样已经可以接受了。

阅读(4299) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

晓梦逸尘2014-04-12 00:23:54

非常有用,回头试试!谢谢!