×
Namespaces

Variants
Actions

在Qt应用中强制使用横屏或竖屏

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

兼容于
平台:
Symbian

文章
bugatcuteqt 在 20 Apr 2010 创建
最后由 hamishwillee 在 08 May 2013 编辑

摘要:本文介绍怎么在Qt for Symbian程序中即使手机水平状态发生变化的时候强制使用横屏或竖屏。

对于带有水平传感器的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<CAknAppUi *>(CEikonEnv::Static()->AppUi());
if (aknAppUi)
aknAppUi->SetOrientationL(CAknAppUi::EAppUiOrientationPortrait);
}
 
void MyWidget::setLandscapeMode()
{
CAknAppUi *aknAppUi = dynamic_cast<CAknAppUi *>(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手机上工作正常。

This page was last modified on 8 May 2013, at 03:01.
134 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×