Qt学习总结
第一天
1. Qt简介
Qt5模块简介:
Qt Widgets:窗口有关的类;
Qt Webkit:网络相关的类;
Qt Test:测试模块;
Qt SQL:数据库相关类;
Qt Quick & Qt QML & Qt Quick Controls & Qt QML Dialogs :嵌入式应用程序开发 js开发(智能家居)
Qt Mulitmedia Widgets:媒体相关;
Qt Core & Qt GUI:基础模块;
Qt Network:网络相关类;比如套接字
Qt Mulitmedia:媒体播放相关;
常用快捷键:
1)帮助文档:F1(光标在函数名字或类名上,按F1即可跳转到对应的帮助文档,查看其详细用法,5.14.0有时打不开,先F2再F1)
2).h文件和对应.cpp文件切换:F4
3)编译和运行:Ctrl + R
4)函数声明和定义(函数调用和定义)切换 :F2
5)代码注释取消注释:Ctrl + / (选中代码再按快捷键)
6)字体变大变小:Ctrl + 鼠标滚轮向上或向下
7)移动代码:选中所要移动的代码 -> 按住Ctrl + Shift + 键盘上下方向键 即可上下移动。主要用于linux平台
8)查找替换关键字:Ctrl + f
9)快速打开代码所在目录:编辑模式下 -> 选中项目文件 -> 右击 -> 选择“显示包含的目录”,即可显示项目所在目录(此方法同样可以打开代码文件所在目录)
2. 创建Qt程序
1>. 一个Qt程序的组成部分:至少有两个基本类 应用程序类、窗口类
2>. 应用程序类个数:有且只有一个QApplication a;
3>. 如何查看类对应模块:光标移动到类上,按F1; qmake += 模块的名字
3. 第一个Qt程序
1>. 在窗口中添加按钮
类名:QPushButton
设置按钮显示的内容:setText
移动按钮位置:move
按钮设置父窗口:setParent
设置窗口大小: 可改变的大小:resize()、 固定大小: resizeFixed();
2>. Qt的坐标体系
坐标原点:左上角
x轴延伸的方向:向右递增
y轴延伸的方向:向下递增
3>. Qt内存回收机制
满足什么条件下的类不需要用户手动释放内存?
1、由QObject类直接或间接派生
2、给直接或间接派生出的类,指定父对象
4. 信号和槽 *****
1 >. 格式:connect(信号发出者对象(指针), &className::clicked, 信号接收者对象(指针), &classB::slot);
2 >. 标准信号槽的使用:选中对象按F1,查看Signals
3 >. 自定义槽函数:
a. 返回值是void;
b. 可以重载;
c. 需要跟信号对应, 个数少于等于信号的参数;
4 >. 自定义信号:
a. 返回值是void;
b. 可以重载;
c. 需要使用一个关键字声明: signals: (发送信号: emit + 信号名;)
d. 不需要函数定义
5 >. 带参数的信号(槽):
1. 重载的时候: 信号槽发生了重载, 需要使用函数指针(需要加作用域)
2. qt4信号槽的使用:两个宏 SIGNAL(信号的函数名(int, long)) SLOT(槽函数名(int, long)) 缺点:不能做错误检查,槽函数名称有误也不会报错
connect链接 重载过的信号和槽的解决方法
6 >. Qt4信号槽的链接方法:Qt4的槽函数必须使用public/protected/private slots:即,使用自定义槽函数时,需要在前面加上 public solts:
7 >. 拓展:
a、信号可以连接信号; (连接方式跟连接槽函数方式一样,就是把槽函数替换成信号就行,但是要注意一点,后面的信号参数需要跟前面对应)
b、一个信号可以连接多个槽函数(连接多个槽函数时,连接是有顺序的,但是执行时是随机的)
c、多个信号可连接同一个槽函数
d、槽函数可以使用lambda表达式
5. lambda 表达式 *****
[=](参数)
{
函数实现
}
用前需要在.pro文件中添加一次 CONFIG += c++11
第二天
1. QMainWindow ***
1 >. 菜单栏
2 >. 工具栏
3 >. 浮动窗口和核心部件
4 >. 状态栏
2. QDialog ***
1 >. 模态对话框
2 >. 非模态对话框
3 >. 标准对话框和文件对话框
4 >. 文件对话框的使用
a. 打开文件对话框
b. 保存文件对话框
c. 打开目录对话框
3. 布局 ***
1 >. 水平布局
2 >. 垂直布局
3 >. 网格布局
4. 常用控件 ****
1 >. 按钮 -- QPushButton
2 >. 单选按钮 -- Radio Button
3 >. 复选按钮 -- Check Button
4 >. 列表按钮 -- List Widget
5. 自定义控件 ****
6. 事件处理器函数 *****
1 >. 使用事件处理器函数,第一步要做什么?
2 >. 一些常用事件
a. 鼠标进入
b. 鼠标离开
c. 鼠标按下
d. 鼠标释放
e. 鼠标移动
f. 定时器
1. 启动定时器
2. 关闭定时器
3. 出发定时器操作
7. 事件分发器 -- event()函数 **
1 >. 事件分发器的作用?
2 >. 函数返回值
3 >.
8. 事件过滤器 **
1 >. 函数返回值?
2 >. 如何使用事件过滤器?
9. 不规则窗体的实现
第四天
1. 文件操作
1 >. 使用文件类对文件进行操作:QFile
a. 打开文件
b. 读文件
c. 写文件
d. 关闭文件
2 >. 文本流: QTextStream
a. 侧重于文本读写: QChar, QString, int 等基层数据类型
b. 属于轻量级的流操作类
3 >. 数据流: QDataStream
a. 侧重于数据格式和类型
b. QTextStream能做的事儿 QDataStream都能做
c. 可以对特定格式的类型数据进行完美的输入输出
d. 几乎Qt支持的所有类型都可以使用QDataStream进行操作
e. 与平台无关
2. Scoket通信
1 >. TCP通信流程
a. 服务器端
b. 客户端
2 >. UDP通信流程
a. 服务器端
b. 客户端
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了