用Carbide C++ UI Designer做UI的爽与不爽

做过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编辑器)。

    用Carbide C++ UI Designer做UI的爽与不爽_第1张图片  用Carbide C++ UI Designer做UI的爽与不爽_第2张图片

       用Carbide C++ UI Designer做UI的爽与不爽_第3张图片

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

    用Carbide C++ UI Designer做UI的爽与不爽_第4张图片

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

    用Carbide C++ UI Designer做UI的爽与不爽_第5张图片

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

    用Carbide C++ UI Designer做UI的爽与不爽_第6张图片

  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吧。

你可能感兴趣的:(C++,UI,android,list,ListView,Symbian)