目录
前言:
一、Qt Creator 使用技巧
二、 Qt的元对象系统
2.1 Qt的元对象系统概述
2.1.2 属性系统
2.1.3 信号与槽
2.1.4 对象数
2.2 容器类
三、常用界面组件使用
3.1 QString字符串操作
前言:
学习笔记的内容来自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.1.2 属性系统
属性系统:
在oobject的子类中可以通过Q_PROPERTY宏定义属性。
2.1.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();//成员函数
2. 解除与一个特定信号的所有连接:
disconnect(myobject,SIGNAL(mysignal()),nullptr, nullptr);
myobject->disconnect(SIGNAL(mySignal()));
3. 解除与一个特定receiver的所有连接:
disconnect(myobject, nullptr,myReceiver,nullptr);
myobject->disconnect(myReceiver);
4. 解除一对特定的信号和槽的连接:
disconnect(lineEdit,&QLineEdit::textChanged,label,&QLabel::setText);
2.1.4 对象数
对象树
Qobject以对象树的形式组织自己,其构造函数里有一个parent参数。当用另一个
对象作为父对象创建一个QObject时,它会被添加到父对象的children()列表中,而
当父对象被删除时是时,它会被删除。这种方法非常适合GUI对象的需求。例如,
QShortcut(键盘快捷键)是相关窗口的子对象,因此当用户关闭该窗口时,快捷键
也会被删除。
2.2 容器类
Qt库提供了一组通用的基于模板的容器类。可用于存储指定类型的项。例如,如果需要一个大小可变的QString数组,可以使用QList<QString>或QStringList。
Qt容器类成比STL容器更轻巧(速度和存储优化) 、更安全(线程安全) 、更易使用。如果不熟悉STL,或者更喜欢用“Qt的方式”写代码,可以选用Qt容器类。
Qt容器提供了用于遍历的迭代器。STL风格的迭代器是最高效的迭代器,可以与Qt和STL的泛型
算法一起使用。提供java风格的迭代器是为了向后兼容。
三、常用界面组件使用
3.1 QString字符串操作
QString简介:
QString没有父类,QString存储一个由16位QChar组成 (一种Unicode编码,
一个汉字就是一个字符)字符串,每个QChar对应一个UTF-16编码单元。(编码值大于
65535的Unicode字符使用两个连续的QChar存储。)
UTF-8:最少用1个字节编码,可以使用1~4个字节编码。与Latin1编码兼容,被广泛使用Qt Creator存储的源码默认使用UTF-8编码。
UTF-16: 最少使用2个字节编码,可以使用2或4个字节编码。QString的创建和初始化:
将const char *传递给它的构造函数。例下面的代码创建了一个包含"Hello"的长度为5的
OString:QString str ="Hello"
QString字符串的索引:文章来源:https://www.toymoban.com/news/detail-810509.html
可以使用元素索引操作符“[]” 或者 接口函数at()。文章来源地址https://www.toymoban.com/news/detail-810509.html
到了这里,关于学习Qt笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!