Qt扩展(更新于2023.4.13)

对pro文件的补充

  1. 在Qt5以上的版本有一个新模块core5compat,需要手动添加,追加以下代码
greaterThan(QT_MAJOR_VERSION, 5): QT += core5compat
  1. DESTDIP可以指定生成文件的路径
//指定生成文件的路径
//在Linux中有个命令是PWD,用来显示当前所处的位置
//所以$$PWD的意思就是PRO文件所在的文件夹的位置
//故这里生成的文件的位置是PRO文件的上级目录的bin文件夹中
DESTDIP = $$PWD/../bin
  1. CONFIG用来指定工程配置和编译参数
//warn_off关闭大量警告,默认是打开的,因此这句话加不加都差不多
CONFIG += warn_off


//若是想要打开大量警告,则使用以下代码
CONFIG -+ warn_off

对.h文件的内容补充

  1. 以下代码中,对类型有个Q_DECL_EXPORT宏,其作用是:为了导出这个类,生成.dll的同时生成.lib文件。提供给外部接口供其他类使用
#ifdef quc //quc是一个自定义控件模块
class Q_DECL_EXPORT Battery : public QWidget//使用这个宏
#else
class Battery :public QWidget
#endif

摘自QT文档 :
根据您的目标平台上,Qt提供了包含必要的定义特殊的宏:
Q_DECL_EXPORT必须被添加到符号的编译一个共享库时使用的声明。(没看懂
Q_DECL_IMPORT必须被添加到符号的编译使用共享库的客户机时使用的声明。

自定义属性Q_PROPERTY

  • Q_PROPERTY一定是继承于QObject
Q_PROPERTY(
    type name
    READ getFunction  //只读函数,这个不是选项,必须要有
    [WRITE setFunction]  //用于设置属性的值
    [RESET resetFunction]  //设置属性的初始值
    [NOTIFY notifySignal]
    [DESIGNABLE bool]
    [SCRIPTABLE bool]
    [STORED bool]
    [USER bool]
    [CONSTANT]
    [FINAL]  //表明属性不能被派生类重写(我还是不太懂这句话的含义)
)

QTimer定时器

  • QTimer不是界面控件,所以在UI中是找不到的,想要使用只能通过纯代码的方法
  • 作用:定时特定的时间
QTimer *timer = new QTimer(this);//先创建一个定时器
timer->setInterval(100);//设置定时器的时间间隔(定时周期),括号中的单位是ms

connect(timer,SIGNAL(timeout()),xxx,SLOT(xxx()));//将timeout绑定到特定的槽
  • 这个timeout是当定时器的时间超过setInterval设定的时间后发出的信号,在timeout信号发出后,定时器重置,重新计时
timer->start();//启动定时器
timer->stop();//关闭定时器
  • 注意:当QTimer的父对象被销毁时,它也会被自动销毁
//start有多种写法,时间设定可以和start一起
timer->start(2000);

QRect和QRectF

  • QRect定义了平面矩形,一个矩形在内部是由左上角和右下角表示的(实际上就是给了两个点的坐标),但是通常它所表达到是一个左上角和一个大小
  • 一个QRect可以用一组上、左、宽、高四个整数,或者从两个QPoint或者从一个QPoint和一个QSize来构造
#include<QRect>

//创建一个无效的矩形,因为没有给这个矩形的有关参数
QRect::QRect();

//构造一个左上角为topLeft,右下角为bottomRight的矩形
QRect::QRect(const QPoint& topLeft,const QPoint& bottomRight);

//构造一个左上角为topLeft并且矩形大小为size的矩形
QRect::QRect(const QPoint& topLeft,const QSize& size);

//构造一个上、左、宽、高分别为top,left,width和height的矩形
QRect::QRect(intleft,inttop,tinwidth,intheight);
  • 注意:QRectF与QRect没有什么太大的区别,但是不推荐使用QRect在这里插入图片描述

  • QRectF的精度是浮点型,而QRect的精度是整型

QPoint和QPointF

  • QPoint表示一个平面上整数精度的点坐标,可以通过x(),y()等函数方便的进行存取操作,另外也重载了大量的运算符,使其可以作为一般的常数一样进行运算。另外其也可以表征为向量,可进行向量的相关运算例如乘除以及长度的计算
  • 与QRect和QRectF类似,QPoint和QPointF没有太大的差别,就是精度上的不同,前者精度是整数,而后者是浮点数;同时QPointF提供了QPointF和QPoint相互转换的方法

qreal

  • 查看Qt文档我们可以得到以下内容在这里插入图片描述
    qreal是double的别名,除非用户自己配置qreal为float,还有疑问可以看这篇博客QT中qreal关键字详解

qMax、qMin、qAbs

  • qAbs是qAbsoluteValue的缩写,意思是绝对值在这里插入图片描述
T qAbs(const T &value);  
  • qMin是获得两个数中的最小值在这里插入图片描述
const T & qMin(const T &value1,const T &value2);
  • qMax是获得两个数中的最大值在这里插入图片描述
const T & qMax(const T &value1,const T &value2);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默示MoS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值