分析Qt Symbian手机应用移植注意事项
创始人
2024-07-31 20:51:19
0

本文介绍的是关于分析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手机应用移植注意事项的内容讲完了,以上也是我们常见的问题,希望本文对你有引导性的帮助。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...