Qt类库概述

前言

这里主要做一些笔记加上个人的理解和随笔, 参考书籍<<Qt5.9 c++开发指南>>。


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数据类型等效定义字节数
qint8signed char1
qint16signed short2
qint32signed int4
qint64long long int8
qlonglonglong long int8
quint8unsigned char1
quint16unsigned short2
quint32unsigned int4
quint64unsigned long long int8
qulonglongunsigned long long int8
ucharunsigned char1
ushortunsigned short2
uintunsigned int4
ulongunsigned long8
urealdouble8
qfloat16float2

其中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类库的模块

这里不做展开

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值