本文介绍的是在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 应用中强制使用横屏或竖屏的实现,内容讲述完了,不知道有没有帮助到你!