QT Jambi Clock

 

学程序也有好几年了吧,呵呵,从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图片,呵呵,就用这个了,把这个程序里面的图片结合我已有的程序,效果还不错,后面就模仿它的功能做了一个背景样式选择. 完整源代码下载

0 评论: