C++界面编程首选QT资料汇编

当项目移植到到QT后,觉得MFC真的是可以抛弃了,MFC相对于QT缺点实在太多。当然MFC还有一个致命的缺陷,没法跨平台。

更多:Qt

《C++ GUI Qt 4 编程》 下载:
链接: https://pan.baidu.com/s/1OP7R0US_2nrbNuPL9EizRw 提取码: 4uum

为什么qt成为c++界面编程的第一选择

一、前言

为什么现在QT越来越成为界面编程的第一选择,笔者从事qt界面编程已经有接近8年,在这之前我做C++界面都是基于MFC,也做过5年左右。当时为什么会从MFC转到QT,主要原因是MFC开发界面想做得好看一些十分困难,引用第三方基于MFC的界面库代码也是比较混乱,当时主要看到qt有qss样式设计这个功能,决定试下。当项目移植到到QT后,觉得MFC真的是可以抛弃了,MFC相对于QT缺点实在太多。当然MFC还有一个致命的缺陷,没法跨平台。当然有同学可能说为什么不直接使用C# WPF做界面,我们一些项目和工具确实是用C#做的,C#和C++也确实可以互相调用,并且可以断点调试。但在性能上还是有不少的损失。对于我们做的音视频和三维仿真项目确实有影响,所以只在一些对性能没有极致要求的项目中使用C#。

为了方便更多 Qter 了解、学习 Qt,现将相关资源进行整理,主要内容包括:Qt 官网、编码风格、GitHub & Third-Party、社区论坛、博客、书籍等。

Qt 官网
Qt 官网:https://www.qt.io

Qt 下载:http://www.qt.io/download

Qt 所有下载:http://download.qt.io/archive/qt

Qt 官方发布下载:http://download.qt.io/official_releases/qt

Open Source 下载:http://www.qt.io/download-open-source/#section-2

Qt WiKi:https://wiki.qt.io/Main_Page

编码风格
Qt Coding Style

http://wiki.qt.io/Qt_Coding_Style(low-level)
http://wiki.qt.io/Coding_Conventions( higher-level )
Google 开源项目风格指南
http://zh-google-styleguide.readthedocs.io/en/latest
里面包含五份(C++ 、Objective-C、Python 、JSON、Shell )中文版的风格指南。

C 编码风格指南
http://www.quinapalus.com/coding.html

C++ 编码标准
http://www.possibility.com/Cpp/CppCodingStandard.html

GitHub & Third-Party
QtProject
https://github.com/qtproject
各种强大的 Qt 项目及丰富的 Qt 库。

Awesome Qt
一系列强大的 C/C++ 框架、库、资源和其它好东西。

https://insideqt.github.io/awesome-qt
https://github.com/fffaraz/awesome-cpp
http://fffaraz.github.io/awesome-cpp
inqlude
https://inqlude.org
Qt 库存档 – 为 Qt 应用程序开发人员提供了所有现有的库。

free-programming-books-zh_CN
https://github.com/justjavac/free-programming-books-zh_CN
免费的计算机编程类中文书籍

社区论坛
国外论坛:

Qt-Centre:
http://www.qtcentre.org
一个非常全面的外国网站,有 forum、wiki、docs、blogs 等。

Qt-forum
http://www.qtforum.org
比较有名的国际 Qt 编程论坛。

Developpez
https://qt.developpez.com
一个法语社区,致力于信息技术的发展。该网站向读者免费提供资源和服务:博客、论坛、教程、在线课程、源代码等。

Qt-Apps
http://qt-apps.org
可以找到很多免费的 Qt 应用,获得源码来学习、研究,使用时请遵守相关开源协议。

KDE-Apps
http://kde-apps.org
用过 Linux/KDE 的应该比较熟悉,里面有许多 KDE-Desktop 相关的应用。

Qt Software
http://www.qtsoftware.com
提供越来越多的第三方商业软件和开源软件的 Qt 用户社区。

QUIt Coding
http://quitcoding.com
一群享受前沿技术开发的人才,Qt 官方大使项目的成员。

国内论坛:

CSDN Qt 论坛
http://bbs.csdn.net/forums/Qt
作为中国最大的IT社区和服务平台,CSDN 也在持续的关注 Qt 的发展,Qt 技术社区也已经上线很久了,可以在里面进行知识传播 – 提问、分享自己的一些学习心得、资料等。

QTCN 开发网
http://www.qtcn.org
国内最早、最活跃的 Qt 中文社区,内容丰富、覆盖面广、在线人数众多,上面有很多热心、无私的 Qt 爱好者,他们会帮助初学者尽快的入门。

Qter 开源社区
http://www.qter.org
致力于 Qt 普及工作!里面富含 Qter 们开发的实用开源项目和作品,以及一系列优秀的原创教程 – 图文并茂、简单易学,力争帮助每一位初学者快速入门。

建议: 希望大家经常多去浏览一下,会有很多收获,技术文章往往有一定的深度,初学者可能会不太适应。

博客
Planet Qt
http://planet.qt.io/
Qt 相关博客的汇集者,无论作者是谁,它包含的意见是各自作者的。

一去丶二三里
http://blog.csdn.net/liang19890820
纯正开源之美,有趣、好玩、靠谱。。。

齐亮
http://qihome.org
修身-“齐家”-治天下。

豆子
http://www.devbean.net
Colorful Technologies… 《Qt 学习之路》系列很不错。

1+1=10
http://blog.csdn.net/dbzhang800
简简单单,我的小屋…

foruok
http://blog.csdn.net/foruok
关注程序员的职业规划,愿更多人找到适合自己的修行路。

QtDebug
http://qtdebug.com
我们所做的事,所写的代码,都已经被其他人做过无数次了,这里只不过是用了我们自己的方式再演绎一次,人生如戏,全靠演技。

书籍
《QmlBook》 – A Book about Qt5:

英文版:http://qmlbook.github.io
中文版:https://github.com/cwc1987/QmlBook-In-Chinese
书名:《C++ Primer plus》
作者:Stephen Prata
介绍:从入门到精通必读经典教程。它被誉为“开发人员学习 C++ 的教程,没有之一”!

书名:《C++ Primer》
作者:Stanley B. Lippman、Josee Lajoie、Barbara E. Moo
介绍:久负盛名的经典教程,系统全面地介绍了 C++,可以看成是学习 C++ 的百科全书,C++ 程序猿必备。

书名:《C++ GUI Qt 4 编程》
作者:Jasmin Blanchette、Mark Summerfield
介绍:Trolltech 的 Qt 培训教材,生动、全面、深刻地阐明了 Qt 程序的设计理念,轻松创建跨平台的解决方案。

书名:《Qt 高级编程》
作者:Mark Summerfield
介绍:阐述 Qt 高级编程技术的书籍。以工程实践为主旨,是对 Qt 现有的 700 多个类和上百万字参考文档中部分关键技术深入、全面的讲解和探讨。

书名:《Python Qt GUI 快速编程》
作者:Mark Summerfield
介绍:讲述如何利用 Python 和 Qt 开发 GUI 应用程序的原理、方法和关键技术。结构合理,内容详实,适合用作对Python、Qt 和 PyQt 编程感兴趣的童鞋。

书名:《C++ Qt 设计模式》
作者: Alan Ezust
介绍:利用跨平台开源软件开发框架 Qt 阐释了 C++ 和设计模式中的主要思想,既复习了设计模式,又学了 C++/Qt,对于使用其它框架也是一个非常有用的参考。

书名:《Qt5 开发实战》
作者:金大zhen、张红艳 译
介绍:在全面阐述 Qt 基本功能的基础上,对新增的功能和服务进行了重点介绍。同时运用大量示例,集中讲解了应用程序的开发方法、技巧和必需的 API。

书名:《Qt5 开发及实例》
作者:陆文周
介绍:以 Qt5.4 为平台,循序渐进,在介绍开发环境的基础上,系统介绍 Qt5 应用程序的开发技术,通过实例介绍和讲解内容,将知识和能力融为一体。一般能够在比较短的时间内掌握 Qt5 应用技术。

书名:《Qt on Android 核心编程》
作者:安晓辉
介绍:基于 Qt 5.2,详细讲述如何在移动平台 Android 上使用 Qt 框架进行开发。无论是专注于传统的桌面软件开发,还是希望尝试使用 Qt 在 Android 平台开发,都可以从中获得重要的知识与实例。

书名:《Qt Quick 核心编程》
作者:安晓辉
介绍:着力于 QML 语言基础、事件、Qt Quick 基本元素,辅以简要的 ECMAScript(JavaScript)语言介绍,能够快速熟悉 Qt Quick 的基本知识和开发过程,详尽入微。

书名:《Qt Creator快速入门 》
作者:霍亚飞
介绍:基于 Qt Creator 编写,全面涉及 Qt Quick;植根于 Qt 网络博客教程,可无限更新;对每个知识点详尽讲解,并设计了示例程序。

书名:《Qt5 编程入门》
作者:霍亚飞、devbean
介绍:基于 Qt5.3 编写,全面涉及 Qt Quick;植根于 Qt 网络博客教程,可无限更新;对每个知识点详尽讲解,并设计了示例程序。

最后的话

如果你是新手,建议从 Qt5 学起;如果你要买 Qt4 相关的书,只建议这两本
《C++ GUI Qt 4 编程》和《Qt 高级编程》 。

二、QT历史

说了一些我们项目的情况,再来简单介绍一下QT历史,知道历史的目的是要判断使用此库是否有风险,是否会停止更新,很多开源库没有做好商业化最终都是停掉了。

l QT由奇趣科技公司开发
l 2008 诺基亚从奇趣科技公司收购Qt, 并增加LGPL的授权模式
l 2011 芬兰的Digia从Nokia收购了Qt的商业版权,从此Nokia负责Qt on Mobile, Qt Commercial由Digia负责QT的开发的最高峰是在诺基亚智能手机如日中天的时候,那时候诺基亚塞班系统的手机应用大量都是基于QT,随着苹果和安卓的流行,塞班退出历史舞台。qt的手机端开发需求也基本被替代。但QT在嵌入式、电力系统、军工系统中应用一直没有被替代。

三、QT现在使用情况

了解一下他现在的情况,主要考虑应用场景是否多,就业是否广,人才是否好招聘。QT被广泛应用于嵌入式、电力系统、军工系统等要与硬件交互的界面系统中,并且大量的专业的跨平台应用软件也是使用QT开发。digia接手QT后开发出了安卓和IOS版本的QT,实现了开发一套程序可以在全平台运行。但目前不建议使用QT开发安卓和IOS应用,坑还比较多但肯定会越来越完善。我们列出QT开发的软件:

1. Autodesk May阿凡达和功夫熊猫的3D动画制作软件

2. 在wps的目录中的可以看到QT的的dll库

3. 金山词霸

4. google earth

5. 微软的skype

6. virtualbox(oracle的虚拟机软件)

(太多了就不一一列出了)

四、QT提供的工具再看下QT提供了哪些工具,QT不仅提供了功能丰富的SDK开发包,还提供了强大的工具,这也是我们选择他的原因之一。

1. 基于VS的插件 qt-vs-addin
最新版本提供了2013和2015的版本,旧的版本目前用不起来,但现在c++开发基本主流至少vs2013了。 

2. Qt助手(手册)
qt的手册还是比较完备,并且包含了很多示例的源码。 

3. 基于XML的界面设计器Qt Designer
便捷的解码设计,应该是c++领域最方便的界面设计器。 

4. 跨平台的开发工具 QtCreator
跨平台的c++开发工具,应该是在linux上最方便的c++开发调试工具,就算不用QT库,也可以用它来开发跨平台的c++项目。 

五、QT框架优势

最后我们看下QT有哪些具体优势
1. 工具丰富
这个前面已经对它的工具做了介绍。
2. 功能丰富
出了提供了界面库之外,还提供了音频库,3d库,数据库SDK,WebEngine,网络库等,让我们做跨平台程序变得简便。
3. 开源并跨平台
出了可以自己通过QT源码进行移植之外,qt官方就已经提供了再windows,Android,ios,linux中运行的SDK。
4. 架构的优势
这部分优势很多,我们列出一些示例,可以看出它的优势。
界面源码与用户源码的隔离
qt的策略是没有界面都会生成一个对应的源码,比如有一个界面设计文件xps.ui 它会解析其中的xml生成一个对应了ui_xps.h 文件,这个文件你不需要修改,如果要调用界面中的控件直接通过 Ui::XPSClass ui; 这个对象定义也是写在ui_xps.h中。也就是你的业务逻辑就和界面控件对象的创建和设置做了隔离。
事件处理的便捷(灵活的信号槽机制)
qt提供了信号槽机制,可以很好的降低耦合,提升代码的复用性。例如有这样一个需求,我的一个XMov类专门处理视频,但要把处理进度告知外部界面XSlider的对象,我处理方法,可以XMov提供接口给外部获取进度,或者是主动调用外部接口来刷新显示进度,第一种方法实时性得不到保障,并且界面端程序也需要引入XMov类头文件,也就是做了关联。第二种方法使得XMov类的耦合性加大,当界面发生变化是XMov类需要修改。QT中了信号槽机制可以让两个类XMov和XSlider关联起来,在XMov中直接定义一个信号函数void SetPos(int),直接绑定到XSlider对象的void SetPos(int) 槽函数,二者互相都不知道,降低耦合性。只在统一的入口类中将各个模块直接的信号槽关联起来。

XMov::run()
{
while(!sExit)
{
//处理视频
int pos = DealMove();
 
//发出信号,信号如果没有绑定,这步调用也不会出问题
SetPos(pos);
}
}

绑定方法 
connect(xmov,SIGNAL(SetPos(int)),xslider,SLOT(SetPos(int)))

这就是信号槽的一种好处,当然信号槽也是处理各类控件的自定义事件。
5. 及其便捷的样式设计(像开发web程序一样设计界面)可以很容易的做一个圆角边框,并且有渐变效果,鼠标移上去还发生变化,可以参考下面的样式表,qss基本和css类似,包括支持css的选择器,可以通过类名,对象名,和父类名称来设置。 

QPushButton:!hover
{
 
border-radius:5px;
}
QPushButton:hover /* hover 鼠标悬停*/
{
 
border-radius:5px; /*圆角边框*/
}

作者:

喜欢围棋和编程。

 
发布于 分类 编程标签

发表评论

邮箱地址不会被公开。