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