Qt类库概述

目录

  • 前言
  • Qt类库概述
    • 3.1 Qt核心特点
      • 3.1.1 概述
      • 3.1.2 元对象系统(Meta-Object System)
      • 3.1.3 属性系统
      • 3.1.4 信号与槽
    • 3.2 Qt全局定义
      • 3.2.1 数据类型定义
      • 3.2.2 函数
      • 3.2.3 宏定义
    • 3.3 容器类
    • 3.4 容器类的迭代
    • 3.5 Qt类库的模块

前言

这里主要做一些笔记加上个人的理解和随笔, 参考书籍<>。


Qt类库概述

3.1 Qt核心特点

3.1.1 概述

  • Qt本身不是语言,是跨平台的C++开发类库,为GUI而生,当然也可以面向学习c++等语言
    控制台,类似linux中的gcc吧。
  • 特点
    • 信号和槽
    • 对象属性
    • 元对象编译器MOC(Meta-Object Compiler)
    • Qt Core是Qt的核心,其他模块都依赖于该模块

随笔:
信号与槽也不是新东西,参考操作系统相关的信号(中断)等知识,在内核态理解为任务。在函数指针的回调也有异曲同工之妙
MOC 简单理解是C中的宏定义,简单说就是编译预处理相关的,静态联翩
Qt Core应该很多其他的窗口布局继承了这个核心吧, 而且强相关is-a关系

3.1.2 元对象系统(Meta-Object System)

  • Qt的原对象系统(提供了对象之间通信的信号与槽机制、运行时类型信息和动态属性系统
  • 元对象系统由三个基础组成
    • QObject类是所有使用元对象系统的类的基类。
    • 在一个类的private部分声明Q_OBJECT宏,使得类可以使用元对象的特性,如动态属性、信号与槽。
    • MOC为每个QObject的子类提供必要的代码来实现元对象系统的特性。
      构建项目时,MOC工具读取C++源文件,发现Q_OBJECT宏,为这个类生成另外一个包含有元对象支持代码的C++源文件,这个生成的源文件连同类的实现文件一起被编译和连接。
  • 除了信号与槽机制,还有一些其他功能
	QObject::metaObject()
	QObject *obj = new QPushButton;
	obj->metaObject()->className();	//返回"QPushbutton"
	***
	QMetaObject::newInstance()函数创建类的一个新的实例
	***
	QObject::inherits(const char *className) 函数判断一个对象实例是否是名称为className的类或QObject的子类的实例,例如:
	QTimer *timer = new QTimer;			//QTimer是QObject的子类
	timer->inherits("QTimer");		//true
	timer->inherits("QObject");			//true
	timer->inherits("QAbstractButton");		//false, 不是QAbstractButton的子类
	***
	QObject::tr()QObject::trUtf8()函数翻译字符串,多语言界面设计
	***
	QObject::setProperty(), QObject::property()用于通过属性名称动态设置和获取属性值
	***
	QObject *obj = new QMyWidget;即 QWidget * widget = qobject_cast<QWidget*>(obj);类似c++的多态
	

3.1.3 属性系统

这部分暂折叠,后续使用再补充

3.1.4 信号与槽

这部分暂折叠,前面有一定认知。


3.2 Qt全局定义

3.2.1 数据类型定义

Qt数据类型 等效定义 字节数
qint8 signed char 1
qint16 signed short 2
qint32 signed int 4
qint64 long long int 8
qlonglong long long int 8
quint8 unsigned char 1
quint16 unsigned short 2
quint32 unsigned int 4
quint64 unsigned long long int 8
qulonglong unsigned long long int 8
uchar unsigned char 1
ushort unsigned short 2
uint unsigned int 4
ulong unsigned long 8
ureal double 8
qfloat16 float 2

其中qreal缺省是8字节double类型浮点数,如果Qt使用-qreal float选项进行配置,就是4字节float类型的浮点数。
qfloat16是Qt5.9.0中心增的一个类,用于表示16位的浮点数,要使用qfloat16,需要包含头文件QFloat16

3.2.2 函数

这里不展开,很少使用这些函数,可以使用c++的一些limit相关或math相关

3.2.3 宏定义

不展开


3.3 容器类

不做展开,类似c++中的STL


3.4 容器类的迭代

这里不做展开,大概类似c++中的迭代器,以及增加了for(auto x:aary)这类的东西,后续通过代码做专项


3.5 Qt类库的模块

这里不做展开

你可能感兴趣的:(Qt6,qt)