学程序也有好几年了吧,呵呵,从C程序开始,一直都想要写一个比较漂亮点的桌面程序,不过一直都有这样那样的问题,C++学得太烂了,学到最后还是只会写Console程序,什么是Console程序?就是在命令行(我叫它黑屏)里面运行的程序。还记得那个时候跟阳春一起去参加学校里面的C++程序大赛,呵呵,当然,我的水平很菜的,都靠阳春了,也混了个三等奖,不过一来多半是阳春出的力,再者我也觉得Console的程序实在太丑了。参考程序大赛之前还听过一节钱能的课,大学老师里面我还记得名字不多了,钱能算一个,主要这个名字还是比较牛逼的,有钱就能,哈哈。都说他的C++讲的很好,连那本红红的C++程序书也是他主编的,自然有点崇拜的意思了,不过现在都记得,为了运行在BolandC++6.0里面运行Console程序,钱老师让我们在每个程序的最后都会有一句话大概是cin>>。当时还有点莫名,不过其实这句话学过C++的应该知道,是等待命令行输入的,之所以有这句话,是因为每次运行完Console程序后BolandC++会自动退出这个程序,一般来讲,应该显示Press any key to Continue...这可能是BC6的Bug吧。
后来数据结构课的时候有一个作业,大概是模拟一个冰淇淋店,也是用Console的,因为当时还没写过不是Console的程序,也一直觉得用MFC挺难写的,大部分人应该都这样吧,所以那年的作业几乎都是用Console写的,我写这个程序花了很长时间,用VC6写的,当时就是一开始写很多代码,然后编译,在心里默默祈祷不报错,结果往往是报好几十个编译错误,让人眼花缭乱,无从下手,我C++写的少,就用过VC6,BC6,不过我总觉得VC6就是Shit,编译出来的错误信息千奇百怪,但就是不指向真正错误的地方,这点后来在接触Java以后深有感触。冰淇淋店的程序写到后来在要交作业之前终于能运行了,不过程序还有Bug,当时也基本不会调试,调了好久一直没通,眼看就要到最后期限了,就用了上面提到那招,老师当时坚持作业是让她的研究生来做的,他们都是看程序的运行有没有正常结束,恰好我的程序不能正常结束,我就自己Cout一行,“Press any key to Continue。。。”,也让我蒙过了,哎,惭愧啊。。。
再后来学Java了,应该是大二暑假吧,把电脑带回家,借了一本Java的书,主要也就是看中了书里面有很简单易学的GUI界面编程的东西,不像以前那些书,通篇看下来还不知所云,就这样进入了Java的怀抱。
后来才知道,Swing架构的确不错,MVC,轻量级的UI,不过这些都无法弥补Swing的致命弱点,运行速度慢,很多操作系统平台级别的API很难调用,比如你要写一个半透明的程序,要写一个不规则窗口,这些可以实现,一般人要实现这些那真太难了,要用到JNI,要封装C++程序来调本地API,再通过Java来调这个C++程序,太麻烦了,我曾经为了这两个问题搜索了好几天的百度,Google,也有些结果,不过不是因为效率太低,就是因为程序太难用而放弃了。而且其实Swing也不够灵活,说这句话是看了QT Jambi后才说,之前也觉得Swing是比较灵活,你可以通过Java2D绘制出很炫的程序,也有很多开源的框架,不过跟QT Jambi比起来,那还是有差距的。
QT是我偶然间发现的,当时就想找找C++里面有没有标准的GUI库,也是想试试看在NetBeans里面编个C++的GUI程序,搜索到很多第三方的C++库,也不知道哪个好,就一个一个的放到Google里面去,看返回的结果,谁最多就选谁了。说实话QT这个名字我不喜欢,不太专业,打开了他的官方首页一看,没想到QT还有For Java Developer的,就把这个ForJava 的版本Down了下来,里面有一个Exe的程序,打开,是QT的一些例子,一个个看下来,哇靠,效果刚刚的,看了一下这个Demo的源代码,似乎不是很难,就想要用它来写一个程序,Google一下,想找个简明教程来着,结果很让人失望,QT在C++领域是比较牛了,用得人很多,不过在Java领域几乎还是空白,没什么例子好参考,只剩下这个Demo了.上个星期天的时候把那个IP程序改得差不多了,不想改了,就试着去改QT JambiDemo里面的一个例子,这个例子在屏幕上画了一个圆形的时钟,窗口是圆形的,觉得挺有趣的,就基于这个程序,原程序是通过QT的2D绘制出来,比较丑,就想给它加个背景,搞了一下午,总算加好背景了。不过苦于没有好看的,合适的背景,星期一上班的时候去搜索了一下现有的Clock程序,找到一个也是绘制一个圆形的时钟,背景是BmP图片,呵呵,就用这个了,把这个程序里面的图片结合我已有的程序,效果还不错,后面就模仿它的功能做了一个背景样式选择.
完整源代码下载
百度百科里面的解释: QT软件 Qt是一个多平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。 自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流行的Linux桌面环境KDE 的基础,KDE是所有主要的Linux发行版的一个标准组件。 Qt支持下述平台: MS/Windows - 95、98、NT 4.0、ME、2000 Unix/X11 - Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX和其它很多X11平台 Macintosh - Mac OS X Embedded - 有帧缓冲(framebuffer)支持的Linux平台。 Qt是Trolltech公司的一个产品。 Qt被按不同的版本发行: Qt企业版和Qt专业版 提供给商业软件开发。它们提供传统商业软件发行版并且提供免费升级和技术支持服务。如果要获得最新报价,请浏览Trolltech公司网站的价格和可行性页面,或者与sales@trolltech.com联系。企业版比专业版多一些扩展模块。 Qt自由版是Qt仅仅为了开发自由和开放源码软件 提供的Unix/X11版本。在Q公共许可证和GNU通用公共许可证 下,它是免费的。最新的版本可以在这里下载。 Qt/嵌入式自由版是Qt为了开发自由软件提供的嵌入式版本。在GNU通用公共许可证下,它是免费的。 不过百度百科所描述的QT应该比较老了,现在的最新版本QT4,应该是支持Windows XP,Vista了。 那什么是QT Jambi呢,官方的解释翻译如下(括号里面是我的注解): QT Jambi是一个跨平台,支持富客户端Java应用程序框架(原文:Rich client Javaapplica framework), 它包含了丰富的类库和完整的开发工具套件以支持其所谓富客户端Java程序开发。 后面省略XX字,都是吹嘘之词。
- QT Jambi 架构
- 开发工具:
- QT Jambi类库: