0017:Qt常用类 - QPoint

本文详细介绍了Qt中QPoint类的使用,包括构造函数、成员函数和友元函数,通过实例展示了如何创建、操作和比较QPoint对象,适用于Qt初学者和开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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中的应用程序输出窗口看到输出结果了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值