QT中文教程-----QT教程指南

 转载自qteverywhere
网上有很多关于Qt的学习资料,今天在这里总结一下,希望各位想学习Qt的同学,各取所需,早日从入门到精通!

Part 1: 新手上路
Qt 官方学习教程

Qt 官方学习教程包含了3部分,包括如何学习Qt,如何逐步创建一个地址簿应用以及如何编写Qt Widget。教程由浅入深,Qt初学者必读

如何学习 Qt

我们假定您已了解 C++, 并将用于 Qt 开发。有关将 Qt 与其他编程语言一起使用的更多信息,请参见 Qt 网站。。。。。

地址簿教程

本教程介绍了使用 Qt 跨平台框架的 GUI 编程。在学习过程中,我们将了解部分 Qt 基本技术,如Widget 和布局管理器,容器类,信号和槽,输入和输出设备等。。

Widgets 教程

Widget 是使用 Qt 编写的图形用户界面 (GUI) 应用程序的基本生成块。每个 GUI 组件,如按钮、标签或文本编辑器,都是一个 widget ,并可以放置在现有的用户界面中或作为单独的窗口显示。每种类型的组件都是由 QWidget 的特殊子类提供的,而 QWidget 自身又是 QObject 的子类。


Qt 学习之路:

来自于FinderCheng的Qt 学习之路。简介:在本系列文章中,FinderCheng使用Qt4进行C++ GUI的开发。我是参照着《C++ GUI Programming with Qt4》一书进行学习的。其实,我也只是初学Qt4,在这里将这个学习笔记记下来,希望能够方便更多的朋友学习Qt4。我是一个Java程序员,感觉 Qt4的一些命名规范以及约束同Java有异曲同工之妙,因而从Java迁移到Qt4似乎困难不大。不过,这也主要是因为Qt4良好的设计等等。

Qt学习之路(1):前言

Qt是一个著名的C++库——或许并不能说这只是一个GUI库,因为Qt十分庞大,并不仅仅是GUI。使用Qt,在一定程序上你获得的是一个“一站式”的服务:不再需要研究STL,不再需要C++的 ,因为Qt有它自己的QString等等。或许这样说很偏激,但Qt确实是一个 “伟大的C++库”。

Qt学习之路(2):Hello, world!

任何编程技术的学习第一课基本上都会是Hello, world!,我也不想故意打破这个惯例——照理说,应该首先回顾一下Qt的历史,不过即使不说这些也并无大碍。

Qt学习之路(3):Hello, world!(续)

下面来逐行解释一下前面的那个Hello, world!程序,尽管很简单,但却可以对Qt程序的结构有一个清楚的认识。现在再把代码贴过来:

Qt学习之路(4):初探信号槽

所谓信号槽,简单来说,就像是插销一样:一个插头和一个插座。怎么说呢?当某种事件发生之后,比如,点击了一下鼠标,或者按了某个按键,这时,这个组件就 会发出一个信号。就像是广播一样,如果有了事件,它就漫天发声。这时,如果有一个槽,正好对应上这个信号,那么,这个槽的函数就会执行,也就是回调。就像 广播发出了,如果你感兴趣,那么你就会对这个广播有反应。干巴巴的解释很无力,还是看代码:

Qt学习之路(5):组件布局

顾名思义,绝对定位就是使用最原始的定位方法,给出这个组件的坐标和长宽值。这样,Qt就知道该把组件放在哪里,以及怎么设置组件的大小了。但是这样做的 一个问题是,如果用户改变了窗口大小,比如点击了最大化或者拖动窗口边缘,这时,你就要自己编写相应的函数来响应这些变化,以避免那些组件还只是静静地呆 在一个角落。或者,更简单的方法是直接禁止用户改变大小。

Qt学习之路(6): API文档的使用

今天来说一下有关Qt API文档的使用。因为Qt有一个商业版本,因此它的文档十分健全,而且编写良好。对于开发者来说,查看文档时开发必修课之一——没有人能够记住那么多API的使用!

Qt学习之路(7): 创建一个对话框(上)

首先说明一点,在C++ GUI Programming with Qt4, 2nd中,这一章连同以后的若干章一起,完成了一个比较完整的程序——一个模仿Excel的电子表格。不过这个程序挺大的,而且书中也没有给出完整的源代 码,只是分段分段的——我不喜欢这个样子,我想要看到我写出来的是什么东西,这是最主要的,而不是慢慢的过上几章的内容才能看到自己的作品。

Qt学习之路(8): 创建一个对话框(下)

Qt是分模块的,记得我们建工程的时候就会问你,使用哪些模块?QtCore?QtGui?QtXml?等等。这里,我们引入QtGui,它包括了 QtCore和QtGui模块。不过,这并不是最好的做法,因为QtGui文件很大,包括了GUI的所有组件,但是很多组件我们根本是用不到的——就像 Swing的import,

Qt学习之路(9):深入了解信号槽

槽函数和 普通的C++成员函数没有很大的区别。它们也可以使virtual的;可以被重写;可以使public、protected或者private 的;可以由其它的C++函数调用;参数可以是任何类型的。如果要说区别,就是,槽函数可以和一个信号相连接,当这个信号发生时,它可以被自动调用。

Qt学习之路(10): Meta-Object系统

前面说过,Qt使用的是自己的预编译器,它提供了对C++的一种扩展。利用Qt的信号槽机制,就可以把彼此独立的模块相互连接起来,不需要实现知道模块的任何细节。为了达到这个目的,Qt提出了一个Meta-Object系统。它提供了两个关键的作用:信号槽和内省。


Part 2: 进阶学习

Qt4 学习笔记

Qt4 学习笔记(繁体中文)简体中文(Google 翻译)
来自台湾的caterpillar,Qt4 学习笔记由浅入深,分门别类的介绍了Qt4 中的许多特性,如事件處理,常用圖型元件,常用 API,檔案處理,拖放(Drag & Drop)與剪貼,多執行緒(Multithreading)很多内容,是进一步学习Qt的极好教程

关于Qt编程的书籍

接下来当你学习了上面的相关内容后,就可以开始阅读Qt编程的书籍进行系统的学习了。当然,书也不一定要从头到尾阅读一遍,用时拿出来学习和参考也很不错

C++ GUI Programming with Qt 4 (2nd Edition) (英文版)

C++ GUI Qt4 编程中文版China-pub购买地址
本书详细讲述了用最新的Qt版本进行图形用户界面应用程序开发的各个方面。前5章主要涉及Qt基础知识,后两个部分主要讲解Qt的中高级编程,包括布局管 理、事件处理、二维/三维图形、拖放、项视图类、容器类、输入/输出、数据库、多线程、网络、XML、国际化、嵌入式编程等内容。对于本书讲授的大量 Qt4编程原理和实践,都可以轻易将其应用于Qt4.4、Qt4.5以及后续版本的Qt程序开发过程中。

C++ GUI Programming with Qt 4 (英文第一版)

The Book of Qt 4 - The Art of Building Qt Applications


Part3:深入理解

Inside Qt 系列

QKevin所著,通过剖析Qt源代码,深入浅出的解释了Qt中的许多机制,了解Qt内部是如何 work 的。着实为想深入了解Qt的开发者提供了很好的学习机会。如果你已经学习了上面的内容并且熟练掌握Qt编程,那么大力推荐这一系列文章!

Inside Qt Series: 序

写了这么多年的程序,除了留下很多 code (其中有很多是garbage)之外,再没有其它东西,或许我该写点儿什么了,写一些关于我的工作的东西,自己所了解的技术,也把自己在工作过程中新学习的一些东西放在这儿,就算是为了以后做一个参考。

Inside Qt Series (一):Let’s go, Starting From the QObject

QObject 这个 class 是 QT 对象模型的核心,绝大部分的 QT 类都是从这个类继承而来。这个模型的中心特征就是一个叫做信号和槽(signal and slot)的机制来实现对象间的通讯,

Inside Qt Series (二):对象数据存储(A)

我们知道,在C++中,几乎每一个类(class)中都需要有一些类的成员变量(class member variable),在通常情况下的做法如下:

Inside Qt Series (三):对象数据存储(B)

在 QT 4.4 中,类成员变量定义方法的出发点没有变化,只是在具体的实现手段上发生了非常大的变化,下面具体来看。

Inside Qt Series (四):对象数据存储(C)

接上节,让我们来看看这个 QObjectPrivate 和 QObject 是如何关联在一起的。

Inside Qt Series (五):元对象系统(Meta-Object System)

从本节开始,我们讲解 QT Meta-Object System 的功能,以及实现。在使用 Qt 开发的过程中,大量的使用了 signal 和 slot. 比如,响应一个 button 的 click 事件,我们一般都写如下的代码:

Inside Qt Series (六):元对象编译器 – Meta Object Compiler (moc)

元对象编译器用来处理QT 的C++扩展,moc 分析C++源文件,如果它发现在一个头文件(header file)中包含Q_OBJECT 宏定义,然后动态的生成另外一个C++源文件

Inside Qt Series (七):Signal & Slot

信号和 槽是用来在对象间通讯的方法,当一个特定事件发生的时候,signal会被 emit 出来,slot 调用是用来响应相应的 signal 的。

Inside Qt Series (八):Meta Object Class overview

前面我们介绍了 Meta Object 的基本功能,和它支持的最重要的特性之一:Signal & Slot的基本功能。现在让我们来进入 Meta Object 的内部,看看它是如何支持这些能力的。

Inside Qt Series (九):QMetaObject class data members

我们来看一下QMetaObject的定义,我们先看一下QMetaObject对象中包含的成员数据。

Inside Qt Series (十):connect,幕后的故事

我们都知道,把一个signal和slot连接起来,需要使用QObject类的connect方法,它的作用就是把一个object的signal和另外一个object的slot连接起来,以达到对象间通讯的目的。

Inside Qt Series (十一):emit,幕后的故事

当我们写下一下emit signal代码的时候,与这个signal相连接的slot就会被调用,那么这个调用是如何发生的呢?让我们来逐一解开其中的谜团。

Inside Qt Series (十二):Qt对象之间的父子关系

很多C/C++初学者常犯的一个错误就是,使用malloc、new分配了一块内存却忘记释放,导致内存泄漏。Qt的对象模型提供了一种Qt对象之间的父 子关系..

Inside Qt Series (十三):Qt/e体系结构概述

首先,让我们来看看Qt/e的系统结构介绍:Qt for destop Linux 和 Qt for Embedded Linux 最大的区别就在于他们所依赖的底层显示基础的不同,这也就导致了他们在体系结构上的差异。

Inside Qt Series (十四):Qt/e输入法程序设计指南

本输入法设计指南针对Qt for Embedded Linux 4.5.1,并且以中文输入法为例做说明,并且本文只是侧重于说明Qt/Embedded对输入法的支持接口,

Inside Qt Series (十五):Qt/e 输入法,How it works?

前面我们介绍了Qte输入法的基本设计思路,以及一个最简单的例子,那么,Qte的输入法是如何工作的呢?本节我们就来看一下Qte的源代码,一起来解开这个谜团。


Happy Qt coding….

© 特别感谢Q-Kevin,FinderCheng,caterpillar的原创文章,所有文章都已注明出处。

你可能感兴趣的:(QT中文教程-----QT教程指南)