1 开发环境
在介绍内容之前,先说明一下开发环境,如下图:
Qt版本:Qt5.3.2;
Qt开发工具:Qt Creater 3.2.1;
Qt构建工具:Desktop Qt 5.3 MinGW 32bit;
Qt开发平台:Windows 7 64bit。
2 QPoint
QPoint是Qt中表示点的坐标类,用整型值来表示某个点的x坐标和y坐标。首先,将QPoint中的常用接口整理出来,分为成员函数和友元函数,这样方便学习和理解。
//
//成员函数
//
QPoint(); //构造横纵坐标均为0的QPoint对象
QPoint(int x, int y); //构造横纵坐标分别为x和y的QPont对象
bool isNull() const; //判断是否x和y都是0
int & rx(); //得到横坐标的引用
int & ry(); //到到纵坐标的引用
void setX(int x); //设置横坐标为x
void setY(int y); //设置纵坐标为y
int x() const; //获得横坐标
int y() const; //获得纵坐标
QPoint & operator+=(const QPoint &point); //加赋值
QPoint & operator-=(const QPoint &point); //减赋值
QPoint & operator*=(float factor); //乘赋值
QPoint & operator*=(double factor); //乘赋值
QPoint & operator*=(int factor); //乘赋值
QPoint & operator/=(qreal divisor); //除赋值
//
//友元函数
//
bool operator==(const QPoint &p1, const QPoint &p2); //判断是否相等
bool operator!=(const QPoint &p1, const QPoint); //判断是否不等
const QPoint operator*(const QPoint &, float); //乘法
const QPoint operator*(float, const QPoint &); //乘法
const QPoint operator*(const QPoint &, double); //乘法
const QPoint operator*(double, const QPoint &); //乘法
const QPoint operator*(const QPoint &, int); //乘法
const QPoint operator*(int, const QPoint &); //乘法
const QPoint operator+(const QPoint &); //取正
const QPoint operator-(const QPoint &); //取负
const QPoint operator/(const QPoint &, qreal); //除法
下面,是上述接口的使用例程。
//QPoint();
//bool isNull() const;
QPoint ptNull;
qDebug("pt is null? %s.", ptNull.isNull() ? "yes" : "no");
//QPoint(int x, int y);
//int & rx();
//int & ry();
//void setX(int x);
//void setY(int y);
//int x() const;
//int y() const;
//QPoint & operator+=(const QPoint &point);
//QPoint & operator-=(const QPoint &point);
//QPoint & operator*=(float factor);
//QPoint & operator*=(double factor);
//QPoint & operator*=(int factor);
//QPoint & operator/=(qreal divisor);
QPoint pt(10, 10);
qDebug("pt = (%d, %d).", pt.x(), pt.y());
pt.rx()++;
pt.ry()++;
qDebug("++, pt = (%d, %d).", pt.x(), pt.y());
pt.rx()--;
pt.ry()--;
qDebug("--, pt = (%d, %d).", pt.x(), pt.y());
pt.setX(1);
pt.setY(1);
qDebug("set, pt = (%d, %d)", pt.x(), pt.y());
pt += QPoint(10, 10);
qDebug("+=, pt = (%d, %d)", pt.x(), pt.y());
pt -= QPoint(1, 1);
qDebug("-=, pt = (%d, %d)", pt.x(), pt.y());
pt *= 10.0f;
qDebug("*= float, pt = (%d, %d)", pt.x(), pt.y());
pt *= 10.0;
qDebug("*= double, pt = (%d, %d)", pt.x(), pt.y());
pt *= 10;
qDebug("*= double, pt = (%d, %d)", pt.x(), pt.y());
pt /= 1000.0;
qDebug("/= qreal, pt = (%d, %d)", pt.x(), pt.y());
//bool operator==(const QPoint &p1, const QPoint &p2);
//bool operator!=(const QPoint &p1, const QPoint);
//const QPoint operator*(const QPoint &, float);
//const QPoint operator*(float, const QPoint &);
//const QPoint operator*(const QPoint &, double);
//const QPoint operator*(double, const QPoint &);
//const QPoint operator*(const QPoint &, int);
//const QPoint operator*(int, const QPoint &);
//const QPoint operator+(const QPoint &);
//const QPoint operator-(const QPoint &);
//const QPoint operator/(const QPoint &, qreal);
qDebug("QPoint(10, 10) = QPoint(10, 10)? %s.", pt == QPoint(10, 10) ? "yes" : "no");
qDebug("QPoint(10, 10) != QPoint(10, 10)? %s.", pt != QPoint(10, 10) ? "yes" : "no");
const QPoint ptConst1 = pt * 10.0f;
qDebug("qt * float, QPoint = (%d, %d).", ptConst1.x(), ptConst1.y());
const QPoint ptConst2 = 10.0f * QPoint(10, 10);
qDebug("float * QPoint(10, 10), QPoint = (%d, %d).", ptConst2.x(), ptConst2.y());
const QPoint ptConst3 = pt * 10.0;
qDebug("qt * double, QPoint = (%d, %d).", ptConst3.x(), ptConst3.y());
const QPoint ptConst4 = 10.0 * QPoint(10, 10);
qDebug("double * QPoint(10, 10), QPoint = (%d, %d).", ptConst4.x(), ptConst4.y());
const QPoint ptConst5 = pt * 10;
qDebug("qt * int, QPoint = (%d, %d).", ptConst5.x(), ptConst5.y());
const QPoint ptConst6 = 10 * QPoint(10, 10);
qDebug("int * QPoint(10, 10), QPoint = (%d, %d).", ptConst6.x(), ptConst6.y());
qDebug("+pt = (%d, %d), -QPoint(10, 10) = (%d, %d)", (+pt).x(), (+pt).y(), (-QPoint(10, 10)).x(), (-QPoint(10, 10)).y());
const QPoint ptConst7 = pt / 10.0;
qDebug("qt / qreal, QPoint = (%d, %d).", ptConst7.x(), ptConst7.y());
const QPoint ptConst8 = QPoint(10, 10) / 10.0;
qDebug("QPoint(10, 10) / qreal, QPoint = (%d, %d).", ptConst8.x(), ptConst8.y());
在学习过程中,可以将上述代码放到一个按钮的响应函数中,以调试方式运行,就可以在Qt Creater中的应用程序输出窗口看到输出结果了。