mfc程序转化为qt_Qt的基础学习视频更新结束

博主分享了从MFC转向Qt的心得体会,强调了程序员思维逻辑的重要性。Qt因其跨平台和开源特性受到欢迎,本质是GUI开发库,与数据通信、串口、网络等结合使用方便。博主提到了Qt的QSS、QGraphics视图和QML等模块,建议深入理解编程核心以应对不同工具和语言的学习。
摘要由CSDN通过智能技术生成

目前,Qt的基础学习视频就到这里,告一个段落。很多人说,Qt有什么用,大家都流行java开发,现在都是安卓的天下。下面,就我个人经历而言,来谈谈对于它的看法。

从2007年进入计算机软件行业,由单片机、嵌入式linux,到server服务端开发,也从用VB到C再到C++,从windows到linux逐步走过来,觉得每天都是学习新的知识。特别是使用了网络编程传输数据,数据量并发,从linux下的select、epoll到windows的IOCP、穿越net等技巧,都会觉得特别的开心,很神奇又学到了新的知识,觉得自己很NB。到2010年之后,由于工作需要,学习了vxworks下windml以及DOS下的图形编程,在这些系统下面有很多控件都是画点、画线去实现。往往现在觉得很简单的东西当时在DOS下实现都特别困难。就像在操作系统下面的简单赋值语句,在单片机编程中就需要对寄存器进行多次操作,相当麻烦。当时用MFC写软件的时候,一下子觉得编程突然简单了好多。也正是在MFC的基础上我了解了窗口系统,知道了路径,画刷、画笔、OnPaint以及消息路由等等原理。

后来从MFC转到用Qt的时候,几乎就没有什么学习过程中的感觉。基础上边学就边用,一下子就上手了。就像写多了程序的程序员无论你是用C、C++还是java,哪怕没有使用过这些语言,你都会发现学习并使用这些东西都不是太难的事情。个人认为,程序员最重要的就是有一个良好的思维逻辑。当然项目后来从MFC到Qt的转变,并不是因为Qt有多牛而MFC这个开发工具不行,也不是因为它的什么信号与槽的机制,而是因为它跨平台和开源的特性。也正是由于这些原因,Qt的用户群体逐步变得庞大起来,从PC端到嵌入式,成为了一个目前流行的GUI 库。

有很多人问Qt有什么用,能用来干什么,怎么用Qt来实现串口数据通信,网络通信。那么,先回到Qt到底是什么,Qt最本质的用途是GUI的开发库,是应用程序人机交互可视化系统的展现。

c109dbc9b682e9413b5d87a2547edfda.png

也可以说Qt本身就是和数据通信、串口、网络无关的图形库,如果你本身就会串口编程、xml读写,那么你的以前的代码可以直接和Qt的界面工程放在一起编译使用,丝毫不受影响。当然你要是执意要使用Qt本身提供的串口类或者是网络编程类也是可以,它们的用法并不会和你在操作系统下串口以及网络TCP和UDP编程有太多的区别,甚至你可以认为是你写了一个非常好的串口类,提供给开源社区,然后把你的串口类封装成带Q开始的类而已。

随着Qt集成的类越来越丰富,我大致把它划分几个板块,在最基础的时候了解qt的widget、控件和信号与槽,你就可以去开发qt的应用程序。也就是目前为止视频中讲到的内容,由于在Qt大多数类的封装基本上都用到了Qt特有类似QString,Qpixmap,我们也是有必要去学习一下。

Qss你可以把它当成界面编程的一个补充,在你不熟悉控件自绘又想做出一个漂亮的界面时,可以使用它,它的门槛比较低,语法也比较少,和css样式表的语法类似。

其实Qt中还有基于项的图形视图Qgraphics,它和Qt widget有以下区别和联系。

  1. QGraphics类可以设置rotation,但是QWidget不行;
  2. 基于上述原因,QWidget在移动设备上(分横竖屏)就不能很好的适应屏幕的方向;
  3. 由于是基于项的图形视图,管理一个个QGraphicsItem变得十分容易,可以在一个Scene中管理成百上千的视图项。

但是QGraphics中并没有像QWidget类那样有丰富的控件。而且将QWidget进行重写,变成QGraphics类不是那么明智,基于此,QGraphics是支持将QWidget添加到他的视窗体系的。其实早期Qt的QGraphics视图以及QStyle(qss)就有了QML的雏形了,而鉴于动态脚本编程越来越受欢迎,QML成为Qt另外一种未来的发展趋势。

我个人认为,Qml是Qt的另外一个编程分支,QML作为 Qt 新生力量,完完全全继承了 Qt 包罗万象的特点,它的诞生为 Qt 进军移动领域迈出了历史性的一步。随着 Qt 的不断迭代,QML/Qt Quick 也可用于开发传统的桌面程序,并且效率越来越高,你可以用它做任何你想做的事情。特别是对于界面要求较高的开发者来说,其作用更为重要。

当然如果你希望学习3D,也可以了解Qt的另外一个体系QOpenGLWidget方面的编程。最后,我个人还是认为要学习编程,不管你去学习哪个工具、哪门语言,最重要的还是去将它的最本质最核心的东西了解透彻,后面转其它方向的时候将会发现原理性的东西都是想通的。正如你写一个服务程序,不了解系统,不了解任务的调度机制。很难想象这个程序能有多好。一个语言的模块,你在另外一门语言当然也可以找到类似的定义。好了,由于我的阅历有限,如有不足或者错误的地方还请大家多多指正。最近将修整一些时间,看看下一步一起聊一聊其它什么方面的Qt主题。在此也谢谢大家的关注和支持。再次感谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值