分析Qt Symbian手机应用移植注意事项

移动开发
在QStackedWidget/QStackedLayout中的当前显示视图发生变化时,会发出一个currentChanged(int)的信号,开发者可以利用这个信号去吃执行相应的操作.详情以下内容。

本文介绍的是关于分析Qt Symbian手机应用移植注意事项,做过移植的朋友们应该了解,在移植过程中,出现很多的问题,那么本文将会帮你分析问题的原因。

 在Linux和Windows上做过开发的朋友,可能会发现在把应用移植手机上的时候,不是那么符合手机上的用户使用习惯。而且很多培训教材在讲授Qt 的时候也是针对桌面应用的,对于初学者如果依照培训材料上的例子直接编译成手机版本,也会碰到这个问题。在此我把几个经常碰到的问题整理一下。

QWidget 还是QMainWindow

QMainWindow和QWidget的区别是QMainWindow包含工具栏、状态栏以及 菜单等,对于手机应用来说可见的最大区别是菜单,也就是左下角的那个”Options”选项。

分析Qt Symbian手机应用移植注意事项

所以,如果你的应用较复杂,需要用到菜单处理的时候请使用QMainWindow做为你应用的主窗 口。使用QMainWindow的时候,初学者往往会碰到另一个问题,就是在往QMainWindow里增加新的控件,并使用QLayout来管理这些控 件的时候,经常不能成功。原因是QMainWindow有它自己的布局管理器,如果需要在QMainWindow中增加新控件和布局时,可以通过 QMainWindow::setCentralWidge(QWidget *)给QMainWindow的主界面设定一个QWidget *cw,然后在cw中定义自己的布局和控件。

定制Options菜单

可以通过QMainWindow::newMenuBar()函数获得主窗口的菜单栏(如果没有菜单栏,则创建一个并返回 指针),为菜单栏增加子项可以用addMenu()或者addAction().如果没有子菜单项推荐直接使用addAction,因为如果QMenu无 法直接对外部事件做出响应。

分析Qt Symbian手机应用移植注意事项

定制系统softkey内容

在一个应用有多个视图的时候,如果系统的softkey(就是屏幕下边的软键)总是显示”Options”和”Exit”则无法应用需求,比如离开主界面后, 需要将”Exit“变成”Back”。通过将一个QACtion的setSoftKeyRole()函数可以将QAction绑定到softkey上,同 时QAction的文本/text()也会显示到softkey上。当前softkey的上下文和当前具有输入焦点的控件相关。

分析Qt Symbian手机应用移植注意事项

如果需要给定制的softkey增加子选项,则可以通过QAction::setMenu()来实 现。

分析Qt Symbian手机应用移植注意事项

窗口最大化

大部分的”Hello,World”例子里有使用了show()函数来让窗口显示,但是在手机系统上,我推荐使用showMaximized(),也就是最大 化。

这样做首先保证了窗体被显示出来的时候,屏幕上的 背景部分还有其它应用露出来,容易导致误操作

分析Qt Symbian手机应用移植注意事项

此外,如果使用了showMaximized(),在手机从横向放置变成竖向放置时(或反之),手 机屏幕变化时,应用窗口也会自动进行调整。而如果使用的是show()函数,在手机水平位置发生变化时,应用窗口还是保留原来的大小,有可能导致窗口超出 屏幕,或在屏幕上留下没有覆盖的区域。

分析Qt Symbian手机应用移植注意事项

多窗口应用开发

复杂的应用会有多 个视图,如果在桌面系统上开发我们可以选择在一个QMainWindow里通过MDI管理多个子窗口,但是对于手机屏幕空间相对局限的情况下并不是很适 合,手机应用需要在每个视图都保持最大的界面空间,通过某种方法实现不同视图直接的切换是比较好的方法。

QSatckedWidget和 QStackedLayout

分析Qt Symbian手机应用移植注意事项 

分析Qt Symbian手机应用移植注意事项

要管理多个视图的切 换,Qt提供了两个方便的类。QStackedWidget和QSatckedLayout,区别在于QSatckedWidet继承于QWidget是 可视控件,而QStackedLayout继承于QLayout,仅仅负责布局。

分析Qt Symbian手机应用移植注意事项

每个被加入到QStackedWidget或QStackedLayout的控件视图都会获得一个 索引号(index),QStackedWidget或QStackedLayout可以通过setCurrentIndex来指定当前被显示的是哪一个 控件视图。

分析Qt Symbian手机应用移植注意事项

在QStackedWidget/QStackedLayout中的当前显示视图发生变化时,会发 出一个currentChanged(int)的信号,开发者可以利用这个信号去吃执行相应的操作,比如更新当前的上下文菜单或softkey(前面小节 有介绍),以及根据当前视图更改窗口标题等。

分析Qt Symbian手机应用移植注意事项

小结:关于Qt Symbian手机应用移植注意事项的内容讲完了,以上也是我们常见的问题,希望本文对你有引导性的帮助。

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

2009-12-21 09:53:45

连接Oracle

2011-07-04 17:55:59

Qt SDK Windows

2011-06-29 09:56:29

QT UI 动态加载

2015-09-07 09:27:01

分析应用场景

2020-10-20 14:05:48

用户需求分析IT

2011-06-15 13:39:55

Qt Creator

2011-08-03 11:40:49

布线系统

2011-05-26 11:22:04

SEO

2014-01-13 10:50:28

虚拟化存储

2009-12-15 17:47:17

VSIP

2021-09-28 08:59:40

UPS蓄电池电源

2011-05-11 17:09:03

jsp

2011-06-16 15:17:16

2011-06-28 16:05:12

Qt widget 图片

2009-12-16 15:41:10

Ruby on Rai

2010-07-29 10:27:30

Flex键盘事件

2011-04-11 16:23:57

2010-05-07 10:19:48

Oracle 注意事项

2014-07-01 12:49:06

Android Stu安装

2010-08-04 11:23:59

点赞
收藏

51CTO技术栈公众号