转载请注明出处,dreamthouadnd的blog:
http://www.tangqizhong.us
很久以前就知道QT了,只可惜没机会用到他,所以也没机会好好学习一下。以前(大概是2年前)在大二的时候就在洪师兄的影响下知道了KDE/QT,但我一直用的GNOME,所以没让QT弄起来。而且当时有一块西藏开发板,上面也是跑QTE的,但我却没有好好珍惜这个学习机会,没去弄它。
直到今天,我对自己说,再也不能懒惰了。没想到真把QT用起来了。经过1周的自学,有点心得。(呵呵,感觉有点嚣张了。)
主要是通过对以前的短信编码类重新用QT来改写,发现入手难,但一但原理知道,或者说架构知道后,什么事都好办了。后面就是找函数来实现的问题了。先贴图,再说心得。
在使用QT (wINDOWS 版本,Linux现在沉睡中),有以下几点体会。
1.使用Qt Design会很方便的设计界面,就像MFC与SDK一样。我觉得根本没必要在那些无关紧要的地方花很多时间,所以我是坚决反对用手写界面代码的方法,(但不可避免,最终进行微调时,可能真要手动修改一下代码,毕竟自动生成的不尽完美)。
2.编译过程是qmake -project—->qmake—–>make;在make的时候会将*.ui用uic.exe工具自动生成一个以ui_*的界面元素的头文件。我们可以在自己定义的类里面引用这个头文件,形成新的类。
3.QT的消息机制我觉得比MFC好。很简单明了一个Connect()的函数来解决,在默认情况下,在调用完setupUi()之后,编译器会自动将on_($module)_($message)这样的函数connect到相应module的message中去。
4.QT的字符串处理跟MFC不一样。在CString中字符的存储是以char来存储的,而QString则是unsigned short int双字节存储。举一个例子,当同样为一个文本输入框,当在MFC中输入“abc唐路遥”,MFC中的存储方式是61 62 63 CC C6 C2 B7 D2 A3,而QString则是 61 00 62 00 63 00 10 55 EF 8D 65 90 ,换而言之,QT的 存储方式是UNICODE-16,是相当于我们在VC中执行MultiByteToWideChar()转化到宽字符后的方式。
5.就像你学VC一样,使用MSDN是必修课。学习QT的话,QT Assistant也是必不可少的,通过它能找到你想要实现 功能的函数以及少量的实现方法(感觉还是不够完善,但没办法,谁叫它没M$财大气粗,做不了那么多的维护)
呵呵,不知道最后这么有心得的文章会被谁搜索到了?记得留名啊。
很久以前就知道QT了,只可惜没机会用到他,所以也没机会好好学习一下。以前(大概是2年前)在大二的时候就在洪师兄的影响下知道了KDE/QT,但我一直用的GNOME,所以没让QT弄起来。而且当时有一块西藏开发板,上面也是跑QTE的,但我却没有好好珍惜这个学习机会,没去弄它。
直到今天,我对自己说,再也不能懒惰了。没想到真把QT用起来了。经过1周的自学,有点心得。(呵呵,感觉有点嚣张了。)
主要是通过对以前的短信编码类重新用QT来改写,发现入手难,但一但原理知道,或者说架构知道后,什么事都好办了。后面就是找函数来实现的问题了。先贴图,再说心得。
在使用QT (wINDOWS 版本,Linux现在沉睡中),有以下几点体会。
1.使用Qt Design会很方便的设计界面,就像MFC与SDK一样。我觉得根本没必要在那些无关紧要的地方花很多时间,所以我是坚决反对用手写界面代码的方法,(但不可避免,最终进行微调时,可能真要手动修改一下代码,毕竟自动生成的不尽完美)。
2.编译过程是qmake -project—->qmake—–>make;在make的时候会将*.ui用uic.exe工具自动生成一个以ui_*的界面元素的头文件。我们可以在自己定义的类里面引用这个头文件,形成新的类。
3.QT的消息机制我觉得比MFC好。很简单明了一个Connect()的函数来解决,在默认情况下,在调用完setupUi()之后,编译器会自动将on_($module)_($message)这样的函数connect到相应module的message中去。
4.QT的字符串处理跟MFC不一样。在CString中字符的存储是以char来存储的,而QString则是unsigned short int双字节存储。举一个例子,当同样为一个文本输入框,当在MFC中输入“abc唐路遥”,MFC中的存储方式是61 62 63 CC C6 C2 B7 D2 A3,而QString则是 61 00 62 00 63 00 10 55 EF 8D 65 90 ,换而言之,QT的 存储方式是UNICODE-16,是相当于我们在VC中执行MultiByteToWideChar()转化到宽字符后的方式。
5.就像你学VC一样,使用MSDN是必修课。学习QT的话,QT Assistant也是必不可少的,通过它能找到你想要实现 功能的函数以及少量的实现方法(感觉还是不够完善,但没办法,谁叫它没M$财大气粗,做不了那么多的维护)
呵呵,不知道最后这么有心得的文章会被谁搜索到了?记得留名啊。