在Qt 應用中強制使用橫屏或豎屏
本文介紹的是在Qt 應用中強制使用橫屏或豎屏的實現(xiàn),有時候看圖片、看電影、玩游戲、看電子書等一些操作時,我們希望屏幕是跟著自己轉(zhuǎn)變的,那樣很方便使用。先看本文的講解吧。
對于帶有水平傳感器的Symbian手機,在用戶將手機從橫屏模式(Landscape)切換到豎屏模式(Portrait)時,系統(tǒng)會自動調(diào)整手機的屏幕顯示方向,滿足用戶正常的使用需要。屏幕橫寬比的變化,需要應用調(diào)整窗口的布局,以保證更好的用戶體驗。
但是在某些特殊場合中(比如游戲),開發(fā)者可能希望即使手機的水平狀態(tài)已經(jīng)變化,需要屏幕繼續(xù)保持原來的屏幕方向,提示用戶只能在橫屏或者豎屏方向上使用當前的應用,這就需要通過設置,讓手機屏幕強制處在橫屏或者豎屏狀態(tài)。
Qt的當前版本(Qt-4.6.2)并沒有提供直接控制Symbian 手機屏幕模式的API,需要通過使用Symbian的API來完成
設置API函數(shù)為:CAknAppUi::SetOrientationL();
在Qt中的使用顯示代碼如下:
- #ifdef Q_OS_SYMBIAN
- void MyWidget::setPortraitMode()
- {
- CAknAppUi *aknAppUi = dynamic_cast(CEikonEnv::Static()->AppUi());
- if (aknAppUi)
- aknAppUi->SetOrientationL(CAknAppUi::EAppUiOrientationPortrait);
- }
- void MyWidget::setLandscapeMode()
- {
- CAknAppUi *aknAppUi = dynamic_cast(CEikonEnv::Static()->AppUi());
- if (aknAppUi)
- aknAppUi->SetOrientationL(CAknAppUi::EAppUiOrientationLandscape);
- }
- #endif
要使用上面代碼中的Symbian函數(shù),需要在代碼里把symbian的幾個相關(guān)頭文件加入到源碼中
- #ifdef Q_OS_SYMBIAN
- #include <eikenv.h>
- #include <coemain.h>
- #include <aknappui.h>
- #endif
并且需要在Qt的.pro工程文件中加入以下內(nèi)容,保證應用能夠編譯和鏈接
- symbian {
- LIBS += -lconnmon -lcone -lavkon
- }
注意:該功能在模擬器上不能模擬,但是在Symbian手機上工作正常。
小結(jié):關(guān)于在Qt 應用中強制使用橫屏或豎屏的實現(xiàn),內(nèi)容講述完了,不知道有沒有幫助到你!