QT从入门到实战_传智教育
1.Qt 简介
1.1 跨平台图形界面引擎
1.2 历史
- 1.2.1 1991 奇趣科技
1.3 优点
- 跨平台
- 接口简单,容易上手
- 一定程度上简化了内存回收
1.4 版本
- 商业版
- 开源版
1.5 成功案例
- Linux 桌面环境
- 谷歌地图
- VLC 多媒体播放器
2.创建第一个 Qt 程序
2.1 点击创建项目后,选择项目路径以及给项目起名称
2.2 名称要求
- 不能有中文
- 不能有空格
2.3 路径要求
- 不能有中文路径(会导致主页面无法加载)
2.4 默认创建有窗口类
- 默认创建有窗口类,myWidget
- 基类有三种选择:(QWidget、QMainWindow、QDialog)
2.5 main 函数
- QApplication a 应用程序对象,有且仅有一个
- myWidget w;实例化窗口对象
- w.show() 调用 show 函数 显示窗口
- return a.exec() 让应用程序对象进入消息循环机制中,代码阻塞到当前行
2.6 Qt .h头文件 解释
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget> // 包含头文件 QWidget 窗口类
class myWidget : public QWidget // myWidget 类 继承 QWidget
{
Q_OBJECT // Q_OBJECT 宏,允许类中使用信号和槽的机制
public:
myWidget(QWidget *parent = 0); // 构造函数
~myWidget(); // 析构函数
}
#endif // MYWIDGET_H
2.7 Qt .cpp文件 解释
#incluede "mywidget"
// 命名规范
// 类名 首字母大写,单词和单词之间首字母大写
// 函数名 变量名称 首字母小写,单词和单词之间首字母大写
// 快捷键
// 注释 Ctrl + /
// 运行 Ctrl + r
// 编译 Ctrl + b
// 字体缩放 Ctrl + 鼠标滚轮
// 查找 Ctrl + f
// 整行移动 Ctrl + Shift + ↑ 或者 ↓
// 帮助文档 F1
// 自动对齐 Ctrl + i
// 同名之间的 .h 和 .cpp 切换 F4
// 帮助文档的三种方式
// 第一种 F1
// 第二种 左侧按钮
// 第三种 "Qt 安装目录"/Qt版本/版本/mingw49_32/bin/assistant.exe
myWidget::myWidget(QWidget *parent)
: QWidget(parent)
{
// 在此写代码
}
myWidget::~myWidget()
{
}
2.8 Qt5 基本模块
2.8.1 Qt Core
- 核心
2.8.2 Qt GUI
- 图形化界面
2.8.3 Qt Network
- 网络通信
2.8.4 Qt Mulimedia
- 多媒体
2.8.5 Qt Qtick Controls
2.8.6 Qt Quick Dialogs
2.8.7 Qt Widgets(*)
版本 >= 5
greaterThan(QT_NAJOR_VERSION,4) : QT += widgets
2.8.8 Qt Webkit
- 网页
2.8.9 Qt Test
- 测试
2.8.10 Qt SQL
- 数据库
2.8.11 Qt Quick
2.8.12 Qt QML
2.8.13 Qt Mukitmedia Widgets
- 多媒体界面
3.按钮控件常用 API
3.1 创建 QPushButton
QPushButton *btn = new QPushButton();
3.2 设置父亲
btn.setParent(this);
3.3 设置文本
btn.setText("文字");
3.4 设置位置
btn.move(宽,高);
3.5 重新指定窗口大小
resize(宽,高);
3.6 设置窗口标题
setWindowTitle("标题");
3.7 设置窗口固定大小
setFixedSize(宽,高);
4.
进度:P7
7.自定义信号和槽
- 7.1 自定义信号
- 写到 signal 下
- 返回 void
- 需要声明,但不需要实现
- 可以有参数,可以重载
- 7.2 自定义槽函数
- 返回void
- 需要声明,也需要实现
- 可以有参数,可以重载
- 写到 public slot 下 或者 public 下 或者 全局函数下
- 7.3 触发自定义信号
- emit 自定义信号
8 当自定义信号和槽出现重载
- 8.1 需要利用函数指针 明确指向函数地址
- 8.2 void(Teacher:: * tSignal)(QString) = &Teacher::hungry;
- 8.3 QString 转成 char *
- .ToUtf8() 转为 QByteArray
- .Data 转为 char *