从零开始学Qt - 01. 为什么学Qt,qt如何学好...
从零开始学Qt - 01. 为什么学Qt
我是学物理的,因科研工作需要自己写一些程序。在之前的学习和工作中,在编写图形用户界面(Graphical User Interface,GUI)程序时,我主要用的是C++ Builder。最早,在做本科毕业设计时,需要写一个数据处理的GUI程序。当时没有接触过GUI编程,最早考虑的是学习MFC。在买了一本大部头的MFC图书并且啃了几页后,发现自己学不进去MFC这种繁琐的类库[捂脸]。后来,又接触到C++ Builder 6.0,这种快速开发(RAD)工具只需要简单拖拽控件即可完成界面设计,特别适合我这种业余写GUI程序的人[憨笑]。自此便陆陆续续基于C++ Builder开发了多款GUI程序。
Qt也是一个GUI开发库,但是由于已经对C++ Builder比较熟悉且满足需求,便一直没有学习Qt。今年以来,自己对于人工智能算法有了些兴趣,发现处理这类问题目前最为流行的Python+Qt的组合,因此便重新燃起了学习Qt的兴趣。总结来说,用 Qt 来开发GUI程序有以下优点:
1. 简单易学:Qt 简单拖拽和几行代码就可以开发出一个简单的GUI程序。这个其实与C++ Builder是类似的。
2. 资料丰富:相比于C++ Builder,Qt的更新速度更快,用户群体也更大。
3. 漂亮的界面:Qt 很容易做出漂亮的界面和炫酷的动画,而 MFC、WTL、wxWidgets等可能比较麻烦。
4. 独立安装:Qt 程序最终会编译为本地代码,不需要其他库的支撑。这是相比于其他GUI语言来讲的,比如: Java 要安装虚拟机,C# 要安装 .NET Framework。
5. 跨平台:Qt 支持的操作系统有很多,如果你的程序需要运行在多个平台下,同时又希望降低开发成本,Qt 几乎是最优的选择。在这个方面C++ Builder则要差不少。
6.多语言:Qt虽然是基于纯C++开发的类库,但是存在Python 、Ruby等脚本语言的绑定, 也就是说可以使用脚本语言开发基于 Qt 的程序。比如前面提到的Python+Qt的组合,就是PyQt。
因此,从今天开始,作为理工科程序小白的我[捂脸],打算从零开始学习Qt,并将学习心得整理成系列文章,也算是对自己的一种激励和鞭策。后期,在Qt的基础上,进一步学习Python和PyQt。
qt如何学好
如果你希望开始学习写程序,却不知道该从哪里开始学习。不要着急,先找一份教程熟悉创建窗口、控件的基本方法,这样的教程网上很多,熟悉一个基本Qt程序的创建过程和运行效果。
然后对几个常用的控件,使用使用。一般像按钮(QPushButton)、文本(QLabel)、编辑框(QLineEdit)、单选按钮(QRadioButton)、复选按钮(QCheckBox)。给这些控件添加一些信号槽,比如点击,然后操作感受下效果。
对于控件是用代码写,还是使用Qt的UI设计工具,我的建议是,刚开始先用代码写上几次,用来熟悉常用的几个控件的常用设置接口,之后尽量使用Qt的UI设计器,因为简单高效。
然后重点练习下采用各种布局来对窗口、控件进行排布。水平布局、垂直布局、栅格布局,就这几种简单的布局通过各种组合可以创造出非常复杂却美观的界面。Qt的UI设计器是目前我见过的C++界面库里最好用的,能非常简单高效地完成各种界面排布。
当你能比较熟练地对窗口、控件进行布局时,这时候可以开始考虑实现一个简单的功能了。由一个强烈的明确的目的来驱动你去探索相关的知识,这样学得的印象是非常牢的,并且能获得成就感,不觉枯燥。比如现在我们做个简单计算器,最简单那种就是加减乘除。运用你现在掌握的控件和布局知识,参考计算器的图片来排布一个界面,然后写一些响应。
同时,你可以选择把信息以文件或数据库的形式管理起来这时候,你可以研究研究Qt的文件接口QFile、QDir等几个简单的类,能做各种和文件相关的事情,接口也是非常易懂数据库可以先研究下用小型的sqlite,如果不懂sql语言,那可得补习下。
自绘技术学习过程,会接触各种和显示相关的类比如位置相关的:QRect、QPoint…图片:QPixmap、QImage绘制:画刷QBrush、画笔QPen、颜色QColor、字体QFont
除了自绘,想要美化界面,更有效的办法是使用qss样式表这个就比较有讲究了,而且效果好坏还看你的审美不过语法还是很简单的,用的时候去网上找找修改为自己需要的即可
前面忘说了,程序写好了需要调试,要学习下调试的方法一般有调试运行、打输出、打日志等等调试办法项目里日志是比较有用的东西,经常使用,不可能在客户那里调试
项目里软件往往也会有各种配置,因此xml、ini的读写也需要掌握
普通界面程序写的差不多了,需要试试多线程的程序,Qt的多线程写法比较独特,需要些功夫熟悉下
下一篇:没有了