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

移动开发
在某些特殊场合中(比如游戏),开发者可能希望即使手机的水平状态已经变化,需要屏幕继续保持原来的屏幕方向,提示用户只能在横屏或者竖屏方向上使用当前的应用,这就需要通过设置,让手机屏幕强制处在横屏或者竖屏状态。

本文介绍的是在Qt 应用中强制使用横屏竖屏的实现,有时候看图片、看电影、玩游戏、看电子书等一些操作时,我们希望屏幕是跟着自己转变的,那样很方便使用。先看本文的讲解吧。

对于带有水平传感器的Symbian手机,在用户将手机从横屏模式(Landscape)切换到竖屏模式(Portrait)时,系统会自动调整手机的屏幕显示方向,满足用户正常的使用需要。屏幕横宽比的变化,需要应用调整窗口的布局,以保证更好的用户体验。

但是在某些特殊场合中(比如游戏),开发者可能希望即使手机的水平状态已经变化,需要屏幕继续保持原来的屏幕方向,提示用户只能在横屏或者竖屏方向上使用当前的应用,这就需要通过设置,让手机屏幕强制处在横屏或者竖屏状态。

Qt的当前版本(Qt-4.6.2)并没有提供直接控制Symbian 手机屏幕模式的API,需要通过使用Symbian的API来完成

设置API函数为:CAknAppUi::SetOrientationL();

在Qt中的使用显示代码如下:

  1. #ifdef Q_OS_SYMBIAN  
  2. void MyWidget::setPortraitMode()  
  3. {  
  4. CAknAppUi *aknAppUi = dynamic_cast(CEikonEnv::Static()->AppUi());  
  5. if (aknAppUi)  
  6. aknAppUi->SetOrientationL(CAknAppUi::EAppUiOrientationPortrait);  
  7. }  
  8.  
  9. void MyWidget::setLandscapeMode()  
  10. {  
  11. CAknAppUi *aknAppUi = dynamic_cast(CEikonEnv::Static()->AppUi());  
  12. if (aknAppUi)  
  13. aknAppUi->SetOrientationL(CAknAppUi::EAppUiOrientationLandscape);  
  14. }  
  15. #endif 

要使用上面代码中的Symbian函数,需要在代码里把symbian的几个相关头文件加入到源码中

 

  1. #ifdef Q_OS_SYMBIAN  
  2. #include <eikenv.h> 
  3. #include <coemain.h> 
  4. #include <aknappui.h> 
  5. #endif 

并且需要在Qt的.pro工程文件中加入以下内容,保证应用能够编译和链接

 

  1. symbian {  
  2. LIBS += -lconnmon -lcone -lavkon  

 

注意:该功能在模拟器上不能模拟,但是在Symbian手机上工作正常。

小结:关于在Qt 应用中强制使用横屏竖屏的实现,内容讲述完了,不知道有没有帮助到你!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-05-30 08:42:56

Android

2013-07-29 04:24:40

iOS开发学习ViewControl

2013-07-29 05:04:19

Cocos2dx横屏竖

2012-05-22 14:26:15

XNA 横竖屏设置

2013-07-03 17:08:14

iOS 7人机交互UI设计基础整合iOS系统

2011-05-31 14:18:54

横屏UI设计

2024-04-30 11:49:16

浏览器前端开发折叠屏应用

2023-03-29 09:37:49

视频播放器应用鸿蒙

2012-07-18 09:21:54

iPhone触摸屏

2020-04-21 12:12:06

华为

2011-07-21 15:56:32

iPhone 截屏

2011-06-17 09:34:02

Qt 4.5.1 Sqlite 移植

2021-10-15 10:20:28

手机屏幕苹果

2011-07-25 14:44:41

iPhone iPhone开发 截屏

2015-02-02 11:07:12

iPad大屏

2011-06-17 09:19:03

Qt 4.5.1 Sqlite 移植

2024-04-03 12:37:13

模型数据

2021-11-04 09:37:31

Android截屏实现方式监听截屏

2011-06-08 16:56:37

VS2008 Qt

2022-03-09 14:43:38

LinuxDLNA
点赞
收藏

51CTO技术栈公众号