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