「QT」几何数据类 之 QPoint 整型点类

server/2024/11/14 20:52:09/

在这里插入图片描述

✨博客主页
何曾参静谧的博客
📌文章专栏
「QT」QT5程序设计
📚全部专栏
「VS」Visual Studio「C/C++」C/C++程序设计「UG/NX」BlockUI集合
「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发
「QT」QT5程序设计「File」数据文件格式「PK」Parasolid函数说明
「Math」探秘数学世界

目录

    • QPoint类详解
      • 一、引言
      • 二、使用范围
      • 三、类的头文件
      • 四、类的构造介绍
      • 五、共有函数介绍
      • 六、Static函数介绍
      • 七、运算符重载
      • 八、详细代码举例

QPoint类详解

一、引言

QPoint是Qt框架中的一个核心类,它用于表示二维平面上的一个点。QPoint类提供了丰富的功能,包括点的坐标操作、向量运算以及与其他Qt类的集成。作为Qt绘图和图形界面设计的基础,QPoint类在Qt应用程序中扮演着重要的角色。

二、使用范围

QPoint类广泛应用于Qt的图形编程和界面设计中。它不仅可以用于表示图形界面中的点位置,还可以作为向量进行加减乘除等运算。此外,QPoint类还常用于处理鼠标事件、绘制图形以及进行图形变换等场景。

三、类的头文件

要使用QPoint类,需要包含其头文件<QPoint>。这个头文件定义了QPoint类的所有成员和函数,使得开发者可以在自己的Qt应用程序中使用该类。

#include <QPoint>

四、类的构造介绍

QPoint类提供了两种构造函数:

  1. 默认构造函数:创建一个横纵坐标均为0的QPoint对象。
QPoint();
  1. 参数化构造函数:创建一个横纵坐标分别为指定值的QPoint对象。
QPoint(int xpos, int ypos);

五、共有函数介绍

QPoint类提供了多个共有函数,用于获取和设置点的坐标、进行向量运算等。以下是一些常用的共有函数:

  • int x() const:获取点的横坐标。
  • int y() const:获取点的纵坐标。
  • void setX(int x):设置点的横坐标。
  • void setY(int y):设置点的纵坐标。
  • QPoint &operator+=(const QPoint &point):将当前点与另一个点相加,结果存储在当前点中。
  • QPoint &operator-=(const QPoint &point):将当前点与另一个点相减,结果存储在当前点中。
  • int manhattanLength() const:计算当前点作为向量时的曼哈顿长度(即横纵坐标绝对值之和)。

六、Static函数介绍

QPoint类还提供了一个静态函数dotProduct,用于计算两个点的点积。

static int dotProduct(const QPoint &p1, const QPoint &p2);

该函数接受两个QPoint对象作为参数,并返回它们的点积结果。

七、运算符重载

QPoint类重载了多个运算符,使得该类可以像基本数据类型一样进行运算。以下是一些重载的运算符:

  • QPoint operator+(const QPoint &point):两个点相加,返回一个新的QPoint对象。
  • QPoint operator-(const QPoint &point):两个点相减,返回一个新的QPoint对象。
  • QPoint operator*(int factor):将点乘以一个整数因子,返回一个新的QPoint对象。
  • QPoint operator/(qreal divisor):将点除以一个实数因子,返回一个新的QPoint对象。
  • bool operator==(const QPoint &other):判断两个点是否相等。
  • bool operator!=(const QPoint &other):判断两个点是否不相等。

八、详细代码举例

以下是一个使用QPoint类的详细代码示例,展示了如何创建QPoint对象、获取和设置坐标、进行向量运算以及计算曼哈顿长度。

#include <QCoreApplication>
#include <QPoint>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 创建两个QPoint对象QPoint point1(3, 4);QPoint point2(1, 2);// 获取点的坐标int x1 = point1.x();int y1 = point1.y();qDebug() << "Point1:" << x1 << "," << y1;int x2 = point2.x();int y2 = point2.y();qDebug() << "Point2:" << x2 << "," << y2;// 设置点的坐标point1.setX(5);point1.setY(6);qDebug() << "After setting, Point1:" << point1.x() << "," << point1.y();// 向量运算QPoint point3 = point1 + point2;qDebug() << "Point1 + Point2 = Point3:" << point3.x() << "," << point3.y();QPoint point4 = point1 - point2;qDebug() << "Point1 - Point2 = Point4:" << point4.x() << "," << point4.y();QPoint point5 = point1 * 2;qDebug() << "Point1 * 2 = Point5:" << point5.x() << "," << point5.y();// 计算曼哈顿长度int length = point1.manhattanLength();qDebug() << "Manhattan length of Point1:" << length;return a.exec();
}

在这个示例中,我们首先创建了两个QPoint对象point1point2,并获取了它们的坐标。然后,我们设置了point1的新坐标,并进行了向量加法、减法和乘法运算。最后,我们计算了point1的曼哈顿长度,并将所有结果输出到控制台。

通过本文的介绍,相信读者已经对Qt中的QPoint类有了深入的了解。在实际开发中,可以根据需要灵活运用QPoint类来处理二维平面上的点坐标和向量运算。


在这里插入图片描述


http://www.ppmy.cn/server/141276.html

相关文章

uni-app表单⑪

文章目录 十七、用户登录-登录界面搭建一、结构样式代码编写 十八、用户登录-表单验证一、userRulesMixin 文件使用二、验证规则编写 十七、用户登录-登录界面搭建 一、结构样式代码编写 uni-forms 插件下载 下载地址&#xff1a;https://ext.dcloud.net.cn/plugin?id2773 s…

windows和linux行尾序列CRLF和LF切换问题

行尾序列 行尾序列通常指的是行终止符。常见的行终止符包括&#xff1a; \n&#xff1a;LF (Line Feed)&#xff0c;在文本文件中通常表示为换行&#xff0c;换行&#xff08;LF&#xff0c;ASCII 10&#xff09; \r\n&#xff1a;CRLF (Carriage Return Line Feed)&#x…

M1M2 MAC安装windows11 虚拟机的全过程

M1/M2 MAC安装windows11 虚拟机的全过程 这两天折腾了一下windows11 arm架构的虚拟机&#xff0c;将途中遇到的坑总结一下。 1、虚拟机软件&#xff1a;vmware fusion 13.6 或者 parallel 19 &#xff1f; 结论是&#xff1a;用parellel 19。 这两个软件都安装过&#xff0…

WPF中ImageBrush和Image的区别

在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;ImageBrush 和 Image 控件都可以用来显示图像&#xff0c;但它们的用途和行为有所不同&#xff1a; Image 控件 Image 控件用于在用户界面中直接显示一个图像。它继承自 FrameworkElement&#x…

从零开始:利用Portainer CE和cpolar搭建NextCloud私有云存储

文章目录 前言1. 在PortainerCE中创建NextCloud容器2. 公网远程访问本地NextCloud容器2.1 内网穿透工具安装3.2 创建远程连接公网地址 3. 固定NextCloud私有云盘公网地址 前言 本文将介绍如何在本地利用Portainer CE的可视化界面创建NextCloud私有云盘容器&#xff0c;并通过c…

鸿蒙next版开发:ArkTS组件快捷键事件详解

在HarmonyOS 5.0中&#xff0c;ArkTS提供了一种机制&#xff0c;允许开发者为应用中的组件绑定快捷键事件&#xff0c;这极大地增强了应用的交互性和用户体验。本文将详细解读如何在ArkTS中使用组件快捷键事件&#xff0c;并提供示例代码进行说明。 组件快捷键事件基础 组件快…

多态之魂:C++中的优雅与力量

文章目录 1. 多态的概念1.1 编译时多态&#xff08;静态多态&#xff09;1.2 运行时多态&#xff08;动态多态&#xff09; 2. 多态的定义及实现2.1 多态的构成条件2.1.1 实现多态还有两个必须重要条件&#xff1a;2.1.2 虚函数2.1.3 虚函数的重写/覆盖1. 虚函数的重写&#xf…

vue3 基于element-plus进行的一个可拖动改变导航与内容区域大小的简单方法

1、先上个截图&#xff1a; 说明&#xff1a;拖动上面的分隔栏就可以实现&#xff0c;改变左右区域的大小。 2、上面的例子来自官网的&#xff1a; Container 布局容器 | Element Plus 3、拖动的效果来自&#xff1a; https://juejin.cn/post/7029640316999172104#heading-1…