没有合适的资源?快使用搜索试试~ 我知道了~
首页Qt从入门到精通包含qt学习之路1-18
资源详情
资源评论
资源推荐

经常有人问哪里有学习 Qt 的资料,Qt 的教程,怎么才能入门等等,或者抱怨说
中文的信息太少。其实网上有很多关于 Qt 的学习资料,今天在这里总结一下,
希望各位想学习 Qt 的同学,各取所需,早日从入门到精通!
关于本教程:
本教程是基于您已经了解 C++的基础之上,毕竟 Qt 是一个 C++库。否则您必须先
学习 c++后再来看本教程,C++入门比较好的书籍是《C++程序设计》(谭浩强)。
某些人可能觉得《c++ primer》好,但我认为这本书不适合 c++入门,所以还是
推荐一下谭老的这本通俗易懂的书吧。
教程由 3 部分组成,第一部分为新手上路,是 Qt 的官方教程。其实把它放在第一
部分并不合适,因为对于一个初学 Qt 的人来说一上来就将最好是从一个 Hello
World 程序开始学习比较好。所以推荐初学者从第二部分 Qt 学习之路开始阅读。
第三部分为 Qt 深入编程,对 Qt 很熟悉的读者可以深入研究研究。教程中的所有
代码必须联网才能下载,给您造成的不便之处本人感到非常抱歉。
郑重声明:本教程所有文章及代码均非本人所写,教程中尽可能的标
明文章的出处。如果侵犯了您的版权可以联系本人,本人将立即删除
侵犯版权的内容。E-Mail:yangt1100@163.com

Part 1: 新手上路
Qt 官方学习教程
地址簿教程
本教程介绍了使用 Qt 跨平台框架的 GUI 编程。
在学习过程中,我们将了解部分 Qt 基本技术,如
Widget 和布局管理器
容器类
信号和槽
输入和输出设备
如果您完全不了解 Qt,请阅读如何学习 Qt(如果您还未阅读)。
教程的源代码位于 Qt 的 examples/tutorials/addressbook 目录下。
教程章节:
1. 设计用户界面
2. 添加地址
3. 浏览地址簿条目
4. 编辑和删除地址
5. 添加查找功能

6. 加载和保存
7. 附加功能
虽然这个小型应用程序看起来并不象一个成熟的现代 GUI 应用程序,但它使用
多种用于更复杂应用程序的基本技术。在您完成学习之后,我们建议您查看一下
应用程序示例,它提供带有菜单、工具栏、状态栏等项目的小型 GUI 应用程序。
地址簿 1 — 设计用户界面
文件:
tutorials/addressbook/part1/addressbook.cpp
tutorials/addressbook/part1/addressbook.h
tutorials/addressbook/part1/main.cpp
tutorials/addressbook/part1/part1.pro
本教程的第一部分讲述了用于地址簿应用程序的基本图形用户界面 (GUI) 的设
计。
创建 GUI 程序的第一步就是设计用户界面。在本章中,我们的目标是设置应用
基本地址簿应用程序所需的标签和输入字段。下图为期望输出的屏幕截图。
我们需要使用两个 QLabel 对象:nameLabel 和 addressLabel,以及两个输入
字段:QLineEdit 对象 nameLine 和 QTextEdit 对象 addressText,这样用户
才能输入联系人的姓名和地址。使用的 widget 及其位置如下图所示。

要应用地址簿需使用三个文件:
addressbook.h — AddressBook 类的定义文件,
addressbook.cpp — AddressBook 类的执行文件,以及
main.cpp — 包含 main() 函数并带有 AddressBook 实例的文件。
Qt 编程 — 使用子类
在编写 Qt 程序时,我们通常使用 Qt 对象子类来添加功能。这是创建定制
widget 或标准 widget 集合的基本概念之一。使用子类扩展或改变 widget 的
操作具有以下优势:
我们可以编写虚函数或纯虚函数应用,以得到我们确切所需的功能,并在需要时再
使用基本的类应用。
这样我们就可以在类中封装部分用户界面,应用程序的其他部分也就无需了解用户
界面中单独使用的 widget。
可使用子类在同一应用程序或库中创建多个定制 widget,这样子类的代码可在其他
项目重复使用。
由于 Qt 未提供特定的地址簿 widget,我们在标准的 Qt widget 类中使用子
类,然后添加功能。我们在本教程中创建的 AddressBook 类在需要使用基本地
址簿 widget 的情况下可重复使用。

定义 AddressBook 类
addressbook.h 文件用于定义 AddressBook 类。
我们从定义 AddressBook 为 QWidget 子类和声明构造器开始入手。我们还使用
Q_OBJECT 宏表明该类使用国际化功能与 Qt 信号和槽功能,即使在本阶段不会
用到所有这些功能。
class AddressBook : public QWidget
{
Q_OBJECT
public:
AddressBook(QWidget *parent = 0);
private:
QLineEdit *nameLine;
QTextEdit *addressText;
};
该类包含了 nameLine 和 addressText 的声明、上文提到的 QLineEdit 和
QTextEdit 的私有实例。在以后章节中,您会看到储存在 nameLine 和
addressText 中的数据在地址簿的许多功能中都会用到。
我们不必包含要使用的 QLabel 对象的声明,这是因为在创建这些对象后我们不
必对其进行引用。在下一部分中,我们会说明 Qt 记录对象所属关系的方式。
Q_OBJECT 宏本身应用了部分更高级的 Qt 功能。 我们暂时把 Q_OBJECT 宏理解
为使用 tr() 和 connect() 函数的快捷方式,这种理解对我们的学习更有用。
我们现已完成 addressbook.h 文件,接下来我们来执行对应的
addressbook.cpp 文件。
应用 AddressBook 类
AddressBook 的构造器接收 QWidget 参数
parent
。按惯例,我们将参数传递给
基本类的构造器。这种父项可有一个或多个子项的所属概念对 Qt 中的 widget
分组十分有用。例如,如果删除父项,也会删除其所有子项。
AddressBook::AddressBook(QWidget *parent)
: QWidget(parent)
{
QLabel *nameLabel = new QLabel(tr("Name:"));
剩余171页未读,继续阅读
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论4