学习Qt笔记

前言:

学习笔记的内容来自B站up主阿西拜编程

《Qt6 C++开发指南 》2023(上册,完整版)_哔哩哔哩_bilibili《Qt6 C++开发指南 》2023(上册,完整版)共计84条视频,包括:00书籍介绍、1.1Qt简介、1.2Qt6安装等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1km4y1k7CW/

哔哩哔哩_bilibilihttps://www.bilibili.com/cheese/play/ss5138

一、Qt Creator 使用技巧

快捷键使用

|--------------|----------------------------|
| F4 | 在同名的头文件和源程序文件之间切换 |
| F2 | 变量:跳转到声明;函数:声明和定义切换 |
| Ctrl+Shift+R | 该名称,将所有用到这个字符的地方替换掉 |
| Ctrl+I | 为选中的文本自动缩进 |
| Ctrl+/ | 注释或取消注释 |
| F1 | 为光标所在的位置显示帮助文档 |
| Ctrl+Shift+S | 文件全部保存 |
| Ctrl+F | 调出查找和替换对话框 |
| F3 | 查找下一个 |
| Ctrl+B | 编译当前项目 |
| F5 | 开始调试 |
| F10 | 单步(略过)调试,执行当前程序语句 |
| F11 | 单步(跟踪)调试,如果当前行里有函数,就跟踪进入函数 |
| F9 | 设置或取消断点 |

二、 Qt的元对象系统

2.1 Qt的元对象系统概述

QT中引入元对象系统对标准C++语言进行了扩展。
概述

● Qobject类是所有使用元对象系统的类的基类

● 必须在一个类的开头部分插入宏Q_OBJECT,

才可以使用元对象系统的特性。

当 MoC发现类中定义了Q OBJECT宏时,会为其生成相应的C++源文件

● 元对象编译器 (Meta-object Compiler,MOC) 是一个预处理器,先将Qt的特性

程序转换为标准C++程序,在由标准C++编译器进行编译
Object类:

元对象系统的特性是通过QObject的一些函数来实现的。

● 元对象 (meta object): 每个QObject及其子类的实例都有一个元对象 (静态变

量staticMetaObject) 。函数metaobject()可以返回它的指针。

● 类型信息: Qobject的inherits()函数可以判断继承关系。

● 动态翻译: 函数tr()返回一个字符串的翻译版本。

● 对象树:表示对象间从属关系的树状结构。Qobject提供了parent()、children().

findChildren()等函数。对象树中的某个对象被删除时,它的子对象也将被删除。

● 信号和槽:对象间的通信机制。

● 属性系统: 可以使用宏Q_PROPERTY定义属性,Qobject的setProperty()会设置属

性的值或定义动态属性; property函数会返回属性的值。

2.2 属性系统

属性系统:

在oobject的子类中可以通过Q_PROPERTY宏定义属性。

2.3 信号与槽

信号与槽是元对象系统支持的,对象间通信所采取的机制

connect(sender,SIGNAL(signal()),receiver,SLOT(slot()));

最后一个参数:Qt::ConnectionType表示了信号与槽槽之间的关联方式

Qt::AutoConnection (缺省值):自动确定关联方式。

Qt::DirectConnection:信号被发射时,槽立即执行,槽函数与信号在同一线程

Qt::QueuedConnection: 事件循环回到接收者线程后执行槽,槽与信号在不同线程信号线程会被阻塞直

Qt::BlockingQueueConnection: 与Qt::QueuedConnection相似,到槽执行完毕。当槽函数与信号在同一线程,会造成死锁。
disconnect()函数的使用

  1. 解除与一个sender所有signal的连接:

disconnect(myobject,nullptr,nullptr,nullptr);//静态函数

myobject->disconnect();//成员函数

  1. 解除与一个特定信号的所有连接:

disconnect(myobject,SIGNAL(mysignal()),nullptr, nullptr);

myobject->disconnect(SIGNAL(mySignal()));

  1. 解除与一个特定receiver的所有连接:

disconnect(myobject, nullptr,myReceiver,nullptr);

myobject->disconnect(myReceiver);

  1. 解除一对特定的信号和槽的连接:

disconnect(lineEdit,&QLineEdit::textChanged,label,&QLabel::setText);

2.4 对象数

对象树

Qobject以对象树的形式组织自己,其构造函数里有一个parent参数。当用另一个

对象作为父对象创建一个QObject时,它会被添加到父对象的children()列表中,而

当父对象被删除时是时,它会被删除。这种方法非常适合GUI对象的需求。例如,

QShortcut(键盘快捷键)是相关窗口的子对象,因此当用户关闭该窗口时,快捷键

也会被删除。

三、C++补充知识------STL(标准模板库)

STL六大部件

  • 容器(Containers)
  • 分配器(Allocators)
  • 算法(Algorithm)
  • 迭代器(Iterators)
  • 适配器(Adapters)
  • 仿函数(Functors)
    容器的分类

1、序列式容器(Sequence containers)

每个元素都有固定位置 - - 取决于插入时机和地点和元素值无关。

vector、 deque、 list、 stack、 queue

2、关联式容器 (Associated containers)

元素位置取决于特定的排序准则,和插入顺序无关。

set、multiset、map、multimap

相关推荐
王俊山IT12 分钟前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
plmm烟酒僧43 分钟前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv
Mephisto.java1 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
Black_Friend1 小时前
关于在VS中使用Qt不同版本报错的问题
开发语言·qt
Yawesh_best1 小时前
思源笔记轻松连接本地Ollama大语言模型,开启AI写作新体验!
笔记·语言模型·ai写作
CSUC1 小时前
【Qt】QTreeView 和 QStandardItemModel的关系
qt
南宫生1 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
冷凝女子2 小时前
【QT】海康视频及openCv抓拍正脸接口
qt·opencv·音视频·海康
武子康3 小时前
大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
大数据·人工智能·学习·算法·机器学习·数据挖掘
CXDNW3 小时前
【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0
网络·笔记·http·面试·https·http2.0