QT基础

1.QT核心

Qt核心特点

QT对标准C++进行了扩展,引入了一些新的概念和功能。

元对象编译器( Meta-Object Compiler, MOC)是一个预处理器

先将Qt的特性程序转换为标准C++程序,再由标准C++编译器进行编译

使用信号与槽机制,只有添加Q_OBJECT宏,moc才能对类里的信号与槽进行预处理

Qt为C++语言增加的特性在Qt Core模块里实现,由Qt的元对 象系统实现。

包括:信号与槽机制、属性系统、动态类型转换等。

元对象系统( Meta-Object System)

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

在一个类的private部分声明Q_ OBJECT宏

MOC(元对象编译器)为每个QObject的子类提供必要的代码

QT基础_第1张图片

2.属性系统、信号、槽

属性系统:

Q_ PROPERTY宏定义一个返回类型为type,名称为name的属性

QT基础_第2张图片

信号与槽

QT基础_第3张图片

最后一个参数:

Qt:: ConnectionType表示 了信号与槽槽之间的关联方式

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

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

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

Qt:: BlockingQueueConnection:与Qt:: QueuedConnection相似, 信号线程会被阻塞直

到槽执行完毕。当槽函数与信号在同一线程,会造成死锁。

在槽函数里,使用QObject:sender()可以获取信号发射者的指针

QSpinBox * spinbox = qobject_ cast(sender());

3.混合方式UI设计

能用可视化设计的尽可能用可视化设计解决 ,可视化无法完成的,需要手动编写。

4.QT全局定义

头文件包含了Qt类库的一些全局定义:

基本数据类型

函数

全局变量定义

确保在各个平台上各数据类型都有统一确定的长度

qreal缺省是8字节double类型浮点数,如果Qt使用-qreal float选项进行配置,就是4字节float类型的浮点数

qfloat16是Qt 5.9.0中新增的一个类,用于表示16位的浮点数,要使用qfloat16,需要包含头文件

QT基础_第4张图片

函数全局定义

QT基础_第5张图片

宏定义

Q_BYTE_ORDER、Q_BIG_ENDIAN和Q_LITTLE_ENDIAN: Q_BYTE_ORDER表示系统内存中数据的字节序,Q_BlG_ENDIAN表示大端字节序,Q_LITTLE_ENDIAN表示小端字节序。在需要判断系统字节序时会用到。

Q_DECL_IMPORT和Q_DECL_EXPORT: 在使用或设计共享库时,用于导入或导出库的内容

Q_DECL_OVERRIDE: 在类定义中,用于重载一个虚函数,例如在某个类中重载虚函数paintEvem(),可以定义如下: void paintEvent(QPaintEvent*)Q_DECL_OVERRIDE;

使用该宏后,如果重载的虚函数没有讲行任何重载操作,编译器将会报错

Q_UNUSED(name): 这个宏用于在函数中定义不在函数体里使用的参数

foreach(variable, container): 用于容器类的遍历

forever: 用于构造一个无限循环

qDebug(const char*message..):在debugger窗体显示信息,如果编译器设置了Qt_NO_DEBUG _OUTPUT,则不作任何输出

你可能感兴趣的:(C++,c++)