Qt: Qt4 Embedded 去掉鼠標指針及全屏顯示

一.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 <QWSServer>,實例化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啓動時也不會顯示鼠標指針),

當接上鼠標時,移動一下,鼠標指針就出來了。

當然如果是想支持熱拔插自動隱藏鼠標,還得想另外的辦法。目前這樣已經可以接受了。

發佈了8 篇原創文章 · 獲贊 9 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章