做过Symbian程序的人可能都会多少有这样的感觉,为啥在Symbian下做什么都这么不爽?这么麻烦?包括通常觉得不那么麻烦的UI。像其他平台,如iPhone/Android/Windows Mobile等,都提供了所见即所得的UI编辑器,通过简单的拖拉动作,你就可以做出基本的UI来了。Android的UI编辑器可能你也未必经常用,但是xml格式的UI资源文件相当简洁明了。

Symbian开发环境Carbide C++也是提供UI Designer的,但是我熟悉的Symbian程序员,都不太用这个东西。一直在想,为什么不用呢?难道它非常烂,烂到大家都不想用的程度?于是我开始用UI Designer做了一些UI,然后总结出了一些用UI Designer做Symbian UI的爽与不爽,与大家分享。

爽的地方:

  1. 简单明了,所见即所得。通过几步点击鼠标和拖拉的动作,基本的UI就做完了。你可以通过拖拉,完成UI的基本布局,并且关联控件的事件响应,就像使用其他的UI编辑器一样(例如MFC的UI编辑器)。

     

      

  2. 通过UI编辑器,你可以很方便的管理程序所使用的各种资源,例如图片等。刚开始Symbian编程时,你可能会对mmp文件中位图等各种资源感到疑惑,为什么需要定义这么奇怪的结构?有了UI Designer,点击鼠标就足够了。添加一个图片,右键选择“Edit Image Property”就可以编辑这个图片对应的资源了。

    如果资源还没有添加到工程中,在资源编辑框点击“Edit MBM/MIF File...”,可以很方便的把你需要的图片加入到工程中,并且还可以设置诸如色深,mask色深等属性。再也不需要为理解mmp文件中那些奇怪的符号了。

  3. 通过UI编辑器,你可以点击鼠标就完成tab支持。只需要在你的主uidesign文件的UI Design页,勾选“Enable Navigation Pane Tabbing”,然后依次设置你所有的页面是否支持tab(是否勾选“Is in AppUI tab group”),同时还可以设置对应的tab title或者图片。

  4. 通过UI编辑器还可以通过简单拖拉,添加例如网络访问支持,各种弹出框(包括确认框,输入框,等待框)等。相信这些代码,如果你要手写完成,还是需要花些事件coding和debuging的。

    例如,如果你需要HTTP访问网络的功能,只需要拖入webClient控件,然后Ctrl+S,UI Designer就会帮你生成HTTP Engine的代码并添加到工程中去。在UI Designer下,选中webClient控件后,在Events设置栏,你可以点击鼠标就添加诸如处理HTTP头,HTTP body,HTTP错误等事件。

  5. UI designer实际是个代码生成器,允许你通过鼠标点击完成UI设计,它会帮你把这些所见即所得的UI文件,转换成对应的Symbian资源定义和代码。所以在代码中,你可以经常看见如下的注释。尝试之后发现,UI Designer生成代码的结构还是相当不错的,代码按功能分离,绝对不想人工写的代码,把很多东西混到一起。UI Designer生成的代码结构,是我们值得参考的。

    // [[[ begin generated region: do not modify [Generated Contents]
    iTestContainer = NULL;
    // ]]] end generated region [Generated Contents]

//

上面说了很多使用UI Designer如何如何爽,貌似是在怂恿大家使用UI Designer。确实有此用意,既然有方便高效的工作方式,我们为什么不选择它呢?但是在使用UI Designer的过程中,还是会有些不爽的地发的,列在下面。

  1. 千万不要把你的代码写到UI Designer生成的代码中。上面提到过,UI Designer生成的代码,都是用特殊的注释分割开来的。目的就是向你声明,这是UI Designer的地盘,你别去。如果你一定要把你的代码写到特殊注释中间,那么某天你修改了uidesign文件并且按下Ctrl+S之后,如果发现你写的代码没了,请不要怪UI Designer有问题。
  2. UI Desinger只适合做简单的UI。UI Designer中列出的控件很少,另外有非常多的控件并没有列在UI Desginer中。当你要使用UI Desinger中没有的控件时,你只有自己coding了。
  3. UI Designer并不能做复合UI,或者说UI Designer中没有Control Container(除了ListBox)。如果你想做一个复杂控件,控件中又可能包含其他子控件,你只有自己coding了。
  4. UI Designer对ListBox的支持很有限,UI Designer中只有很少的几种List Style的选择,并且这些style都只能显示一行文字。ListView在手机编程中应该是最常用的控件了,随便找个iPhone程序或者Android程序,你就可以发现大量ListView的应用。iPhone和Android都可以非常方便的支持List Item的定制,然每个List Item按特定的格式显示特定的内容。但是在Symbian下,你要做到对List Item的定制,这个还是有一定难度的。要实现定制,你只有自己coding了。

结论:早期开发中,使用UI Designer会极大的提高你的开发效率,但是当UI已经大体定型,只需要小修小改的时候,还是手动coding来处理UI吧。

用Carbide C++ UI Designer做UI的爽与不爽相关推荐

  1. UI设计是什么,做UI设计都需要学习哪些软件

    什么叫UI这个解释出现在百度上,UI即UserInterface(操作界面)简称.UI设计是指人机交互(用户体验者).操作逻辑(交互设计师).界面美观(视觉设计师)的整体设计.UI设计不仅使软件具有个 ...

  2. Carbide UI designer

    Carbide UI designer 是nokia提供的基于Carbide的一个plugin, 提供了自动生成应用程序框架,可视化的编辑UI界面的功能. 手头上有两个比较官方的关于UI design ...

  3. 关于Qt Designer程序/UI文件打开未响应的解决方法

    关于Qt Designer程序/UI文件打开未响应的解决方法 参考文章: (1)关于Qt Designer程序/UI文件打开未响应的解决方法 (2)https://www.cnblogs.com/ys ...

  4. Qt Designer的UI文件格式

    Qt Designer的UI文件格式 Qt Designer的UI文件格式 Qt Designer的UI文件格式 Qt DesignerUI使用的文件格式由下面介绍的XML模式描述,为方便起见我们将其 ...

  5. SAP Cloud for Customer UI Designer里如何消费Object Value Selector(OVS)

    先看最后实现的效果: 我有一个字段,用户既手动输入Employee ID,也可以点击字段的矩形框,打开Value help: 假设我选中ID为1的Employee,则其first name和last ...

  6. Cloud for Customer UI designer自动生成的一些模型

    UI designer创建一个新的UI后, MVC里的model 层,会自动生成如下一些字段: 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  7. android不能在主线程,安卓开发:主线程真的不能做UI操作吗?这一点很多程序员都没想到...

    只要参与过安卓项目开发一两年的朋友们应该清楚,为了避免UI渲染出现异常安卓框架限制UI操作只能在主线程中进行,如果贸然在子线程做了UI操作结果会怎样?我们随便写下了如下测试代码. 不出意外的话,代码执 ...

  8. python制作界面_详解python做UI界面的方法

    详解python做UI界面的方法 更新时间:2019年02月27日 14:44:34 投稿:laozhang 在本文里我们给大家整理了关于python做UI界面的方法和具体步骤,对此有需要的朋友们可以 ...

  9. 做UI设计需要具备什么技能

    做UI设计需要具备什么技能?想要做一名合格的UI设计师,需要具备的技能有很多,下面小编整理的几点,可供大家参考,希望能帮助到正在学习UI设计的同学们. 做UI设计需要具备什么技能: 一.软件能力 一位 ...

最新文章

  1. mysql教程多表查询_mysql重点,表查询操作和多表查询
  2. oracle数据库主键自增序列_Oracle数据库序列详解
  3. [Cnoi2019]须臾幻境(LCT维护最大生成树+主席树/分块)
  4. Spring Cloud Feign 熔断器支持
  5. 服务器证书在注册表上位置,服务器ssl证书注册表
  6. python浮雕图片_python图像数据增强——imgaug (二)
  7. 使用electron-builder来打包
  8. MySQL error(2014) Commands out of sync; you can't run this command now(情形2)
  9. 斗鱼上市,直播圈“战火”再起,海店湾:狭路相逢勇者胜!
  10. 词法分析器的java代码_利用Java实现简单的词法分析器实例代码
  11. base64编码以及b' '前缀的去除
  12. C语言删除注册表某个键值,怎么批量快速删除注册表中指定的某个键值
  13. 算法时间复杂度O(1)
  14. 北航计算机学院好气派,2017年北京航空航天大学国内排名第几
  15. 配合屏幕录像专家,又小又清晰!
  16. Linux编译QT项目时报错: error: cannot find -lGL 的解决方法
  17. 守法公民 Law Abiding Citizen (2009)
  18. Unity学习4:如何实现2D图像跟踪(涂色类AR项目实践1)
  19. 《实践论》笔记及当下反思(一)
  20. 小爱音箱怎么装app_小爱音箱app|小米AI音箱app(小米小爱app)下载 v1.2.11 安卓版 - 比克尔下载...

热门文章

  1. 【NETGEAR网件】WNDR3700V4 或 WNDR4300 刷OpenWrt及恢复(刷回)
  2. 程序员最好掌握的两个思维模式
  3. iOS Core Bluetooth_3 用作中央设备的常用方法(1/2)[swift实现]
  4. 选购电脑cpu 酷睿 区别 GPU选择
  5. 单相干式变压器红外图像数据(255张图像)
  6. Python 小项目 猜数字小游戏
  7. 跨界教授林宙辰:从北大来,回北大去
  8. SqlParameter in (@ids)_se7en3_新浪博客
  9. java jsp开发的电子商务系统代码下载
  10. linux 查看网卡连接网线,查看网卡是否连接网线