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

7 篇文章 0 订阅

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

QWidget 还是QMainWindow

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

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

 

定 制Options菜单

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

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

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

这样做首先保证了窗体被显示出来的时候,屏幕上的 背景部分还有其它应用露出来,容易导致误操作
此外,如果使用了showMaximized(),在手机从横向放置变成竖向放置时(或反之),手 机屏幕变化时,应用窗口也会自动进行调整。而如果使用的是show()函数,在手机水平位置发生变化时,应用窗口还是保留原来的大小,有可能导致窗口超出 屏幕,或在屏幕上留下没有覆盖的区域。
多窗口应用开发
复杂的应用会有多 个视图,如果在桌面系统上开发我们可以选择在一个QMainWindow里通过MDI管理多个子窗口,但是对于手机屏幕空间相对局限的情况下并不是很适 合,手机应用需要在每个视图都保持最大的界面空间,通过某种方法实现不同视图直接的切换是比较好的方法。
QSatckedWidget和 QStackedLayout
要管理多个视图的切 换,Qt提供了两个方便的类。QStackedWidget和QSatckedLayout,区别在于QSatckedWidet继承于QWidget是 可视控件,而QStackedLayout继承于QLayout,仅仅负责布局。
每个被加入到QStackedWidget或QStackedLayout的控件视图都会获得一个 索引号(index),QStackedWidget或QStackedLayout可以通过setCurrentIndex来指定当前被显示的是哪一个 控件视图。
在QStackedWidget/QStackedLayout中的当前显示视图发生变化时,会发 出一个currentChanged(int)的信号,开发者可以利用这个信号去吃执行相应的操作,比如更新当前的上下文菜单或softkey(前面小节 有介绍),以及根据当前视图更改窗口标题等。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值