QPoint、QLine、QSize、QRect

QPoint、QLine、QSize、QRect

  • QPoint
  • QLine
  • QSize
  • QRect

QPoint

// 构造函数
// 构造一个坐标原点, 即(0, 0)
QPoint::QPoint();
// 参数为 x轴坐标, y轴坐标
QPoint::QPoint(int xpos, int ypos);// 设置x轴坐标
void QPoint::setX(int x);
// 设置y轴坐标
void QPoint::setY(int y);// 得到x轴坐标
int QPoint::x() const;
// 得到x轴坐标的引用
int &QPoint::rx();
// 得到y轴坐标
int QPoint::y() const;
// 得到y轴坐标的引用
int &QPoint::ry();// 直接通过坐标对象进行算术运算: 加减乘除
QPoint &QPoint::operator*=(float factor);
QPoint &QPoint::operator*=(double factor);
QPoint &QPoint::operator*=(int factor);
QPoint &QPoint::operator+=(const QPoint &point);
QPoint &QPoint::operator-=(const QPoint &point);
QPoint &QPoint::operator/=(qreal divisor);
myqpoint1::myqpoint1(QWidget *parent) :QWidget(parent),ui(new Ui::myqpoint1)
{ui->setupUi(this);cout<<"--------------"<<endl;QPoint p1;QPoint p2(2,3);cout<<"p1 value: "<<p1.rx()<<" "<<p1.ry()<<endl;cout<<"p2 value: "<<p2.rx()<<" "<<p2.ry()<<endl;int x = p1.rx();int y = p1.ry();cout<<"p1.x= "<<x<<" "<<"\tp1.y= "<<y<<endl;p1.setX(11);p1.setY(12);cout<<"p1 value: "<<p1.rx()<<" "<<p1.ry()<<endl;cout<<"++++++++++++"<<endl;p1 = p1+p2;cout<<p1.rx()<<" "<< p1.ry()<<endl;p1 = p1*2;cout<<p1.rx()<<" "<< p1.ry()<<endl;}

在这里插入图片描述

在这里插入图片描述

QLine

QLine是一个直线类, 封装了两个坐标点 (两点确定一条直线)

// 构造函数
// 构造一个空对象
QLine::QLine();
// 构造一条直线, 通过两个坐标点
QLine::QLine(const QPoint &p1, const QPoint &p2);
// 从点 (x1, y1) 到 (x2, y2)
QLine::QLine(int x1, int y1, int x2, int y2);// 给直线对象设置坐标点
void QLine::setPoints(const QPoint &p1, const QPoint &p2);
// 起始点(x1, y1), 终点(x2, y2)
void QLine::setLine(int x1, int y1, int x2, int y2);
// 设置直线的起点坐标
void QLine::setP1(const QPoint &p1);
// 设置直线的终点坐标
void QLine::setP2(const QPoint &p2);// 返回直线的起始点坐标
QPoint QLine::p1() const;
// 返回直线的终点坐标
QPoint QLine::p2() const;
// 返回值直线的中心点坐标, (p1() + p2()) / 2
QPoint QLine::center() const;// 返回值直线起点的 x 坐标
int QLine::x1() const;
// 返回值直线终点的 x 坐标
int QLine::x2() const;
// 返回值直线起点的 y 坐标
int QLine::y1() const;
// 返回值直线终点的 y 坐标
int QLine::y2() const;// 用给定的坐标点平移这条直线
void QLine::translate(const QPoint &offset);
void QLine::translate(int dx, int dy);
// 用给定的坐标点平移这条直线, 返回平移之后的坐标点
QLine QLine::translated(const QPoint &offset) const;
QLine QLine::translated(int dx, int dy) const;// 直线对象进行比较
bool QLine::operator!=(const QLine &line) const;
bool QLine::operator==(const QLine &line) const;

创建直线:

myQLine::myQLine(QWidget *parent) :QWidget(parent),ui(new Ui::myQLine)
{ui->setupUi(this);//cout<<"11"<<endl;QPoint p1(1,1);QPoint p2(10,10);QLine l1(p1,p2);QLine l2(1,1,11,11);QLine l3;l3.setP1(p1);l3.setP2(p2);cout<<"l1: x:"<<l1.p1().x()<<","<<l1.p1().y()<<"  y: "<<l1.p2().x()<<","<<l1.p2().y()<<"  center:  "<<l1.center().x()<<","<<l1.center().y()<<endl;cout<<"l2: x:"<<l2.p1().x()<<","<<l2.p1().y()<<"  y: "<<l2.p2().x()<<","<<l2.p2().y()<<"  center:  "<<l2.center().x()<<","<<l2.center().y()<<endl;cout<<"l3: x:"<<l3.p1().x()<<","<<l3.p1().y()<<"  y: "<<l3.p2().x()<<","<<l3.p2().y()<<"  center:  "<<l3.center().x()<<","<<l3.center().y()<<endl;
}

在这里插入图片描述

平移直线:

    QLine line(QPoint(100,200),QPoint(150,210));QLine newLine = line.translated(20,20);qDebug()<<"平移前的: "<<line;qDebug()<<"平移后的:"<<newLine;

在这里插入图片描述
比较:

    qDebug()<<(l1==l2);qDebug()<<(l1==l3);

在这里插入图片描述

QSize

QSize类用来形容长度和宽度, 常用的API如下:

// 构造函数
// 构造空对象, 对象中的宽和高都是无效的
QSize::QSize();
// 使用宽和高构造一个有效对象
QSize::QSize(int width, int height);// 设置宽度
void QSize::setWidth(int width)
// 设置高度
void QSize::setHeight(int height);// 得到宽度
int QSize::width() const;
// 得到宽度的引用
int &QSize::rwidth();
// 得到高度
int QSize::height() const;
// 得到高度的引用
int &QSize::rheight();// 交换高度和宽度的值
void QSize::transpose();
// 交换高度和宽度的值, 返回交换之后的尺寸信息
QSize QSize::transposed() const;// 进行算法运算: 加减乘除
QSize &QSize::operator*=(qreal factor);
QSize &QSize::operator+=(const QSize &size);
QSize &QSize::operator-=(const QSize &size);
QSize &QSize::operator/=(qreal divisor);

例子:

    qDebug()<<"1111";QSize s1; s1.setWidth(10); s1.setWidth(15);QSize s2(5,10);cout<<"s1: x ="<<s1.width()<<"\ty = "<<s2.height()<<endl;cout<<"s2: x ="<<s2.width()<<"\ty = "<<s2.height()<<endl;s1.transpose();cout<<"s1: x ="<<s1.width()<<"\ty = "<<s2.height()<<endl;cout<<"++++"<<endl;qDebug()<<s1;qDebug()<<s2;s1 = s1+s2;qDebug()<<s1;s1 = s1*2;qDebug()<<s1;

在这里插入图片描述

QRect

使用 QRect类来描述一个矩形, 常用的API如下:

// 构造函数
// 构造一个空对象
QRect::QRect();
// 基于左上角坐标, 和右下角坐标构造一个矩形对象
QRect::QRect(const QPoint &topLeft, const QPoint &bottomRight);
// 基于左上角坐标, 和 宽度, 高度构造一个矩形对象
QRect::QRect(const QPoint &topLeft, const QSize &size);
// 通过 左上角坐标(x, y), 和 矩形尺寸(width, height) 构造一个矩形对象
QRect::QRect(int x, int y, int width, int height);// 设置矩形的尺寸信息, 左上角坐标不变
void QRect::setSize(const QSize &size);
// 设置矩形左上角坐标为(x,y), 大小为(width, height)
void QRect::setRect(int x, int y, int width, int height);
// 设置矩形宽度
void QRect::setWidth(int width);
// 设置矩形高度
void QRect::setHeight(int height);// 返回值矩形左上角坐标
QPoint QRect::topLeft() const;
// 返回矩形右上角坐标
// 该坐标点值为: QPoint(left() + width() -1, top())
QPoint QRect::topRight() const;
// 返回矩形左下角坐标
// 该坐标点值为: QPoint(left(), top() + height() - 1)
QPoint QRect::bottomLeft() const;
// 返回矩形右下角坐标
// 该坐标点值为: QPoint(left() + width() -1, top() + height() - 1)
QPoint QRect::bottomRight() const;
// 返回矩形中心点坐标
QPoint QRect::center() const;// 返回矩形上边缘y轴坐标
int QRect::top() const;
int QRect::y() const;
// 返回值矩形下边缘y轴坐标
int QRect::bottom() const;
// 返回矩形左边缘 x轴坐标
int QRect::x() const;
int QRect::left() const;
// 返回矩形右边缘x轴坐标
int QRect::right() const;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/14632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用jmeter+ant+jenkins+git搭建自动化测试平台

最近正在学习自动化测试&#xff0c;于是随手搭建了一下jmeterantjenkinsgit平台。 接下来&#xff0c;我会按照jdk&#xff0c;jmeter&#xff0c;ant&#xff0c;jenkins,git这个顺序一步一步的搭建起来。 一、jdk。这个就不多说了。我用的是1.8版本的&#xff0c;配环境变…

Golang之路---02 基础语法——常量 (包括特殊常量iota)

常量 //显式类型定义const a string "test" //隐式类型定义const b 20 //多个常量定义 const(c "test2"d 2.3e 27)iota iota是Golang语言的常量计数器&#xff0c;只能在常量表达式中使用 iota在const关键字出现时将被重置为0&#xff0c;const中每新…

【Golang】Golang进阶系列教程--Go 语言数组和切片的区别

文章目录 前言数组声明以及初始化函数参数 切片声明以及初始化函数参数 总结 前言 在 Go 语言中&#xff0c;数组和切片看起来很像&#xff0c;但其实它们又有很多的不同之处&#xff0c;这篇文章就来说说它们到底有哪些不同。 数组和切片是两个常用的数据结构。它们都可以用…

appium的基本使用

appium的基本使用 一、appium的基本使用appium环境安装1、安装Android SDK 2、安装Appium3、安装手机模拟器4、Pycharm安装 appium-python-alicent5、连接appium和模拟器6、Python代码调用appium软件&#xff0c;appium软件在通过adb命令调用android操作系统&#xff08;模拟器…

使用BERT分类的可解释性探索

最近尝试了使用BERT将告警信息当成一个文本去做分类&#xff0c;从分类的准召率上来看&#xff0c;还是取得了不错的效果&#xff08;非结构化数据强标签训练&#xff0c;BERT确实是一把大杀器&#xff09;。但准召率并不是唯一追求的目标&#xff0c;在安全场景下&#xff0c;…

代码版本管理工具 git

1. 去B站看视频学习&#xff0c;只看前39集&#xff1a; 01-Git概述&#xff08;Git历史&#xff09;_哔哩哔哩_bilibili 2.学习Linux系统文本编辑器的使用 vi编辑器操作指令分享 (baidu.com) (13条消息) nano编辑器的使用_SudekiMing的博客-CSDN博客 windows下载安装Git官…

状态机实现N位按键消抖

状态机实现N位按键消抖 1、原理 利用状态机实现按键的消抖&#xff0c;具体的原理可参考 (50条消息) 基于FPGA的按键消抖_fpga 按键消抖_辣子鸡味的橘子的博客-CSDN博客 状态机简介&#xff1a; 状态机分类可以主要分为两类&#xff1a;moore和mealy 根据三段式状态机最后…

分布式文件存储与数据缓存 Redis高可用分布式实践(上)

一、Reids概述 1.1 为什么要使用NoSQL 单机Mysql的美好年代 在90年代&#xff0c;一个网站的访问量一般都不大&#xff0c;用单个数据库完全可以轻松应付。在那个时候&#xff0c;更多的都是静态网页&#xff0c;动态交互类型的网站不多。 遇到问题&#xff1a; 随着用户数的…

内网隧道代理技术(十四)之 Earthworm的使用(一级代理)

Earthworm的使用(一级代理) ew 全称是EarchWorm,是一套轻量便携且功能强大的网络穿透工具,基于标准C开发,具有socks5代理、端口转发和端口映射三大功能,可在复杂网络环境下完成网络穿透,且支持全平台(Windows/Linux/Mac)。该工具能够以“正向”、“反向”、“多级级联”…

安防监控视频汇聚EasyCVR修改录像计划等待时间较长,是什么原因?

安防监控视频EasyCVR视频融合汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检…

推荐用于学习RN原生模块开发的开源库—react-native-ble-manager

如题RN的原生模块/Native Modules的开发是一项很重要的技能&#xff0c;但RN官网的示例又比较简单&#xff0c;然后最近我接触与使用、还有阅读了react-native-ble-manager的部份源码&#xff0c;发现里边完全包含了一个Native Modules所涉及的知识点/技术点&#xff0c;故特推…

Kibana+Prometheus+node_exporter 监控告警部署

下载好三个软件包 一、prometheus安装部署 1、解压 linxxubuntu:~/module$ tar -xvf prometheus-2.45.0-rc.0.linux-amd64.tar.gz 2、修改配置文件的IP地址 # my global config global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is ever…

【论文阅读】利用道路目标特征的多期车载激光点云配准

目录 引 言1 道路场景点云特征2 配准方法2.1 配准基元获取2.2 特征点提取2.3 两期道路场景车载点云的配准 2.3.1 基于特征点的4PCS 粗配准 3 实验与分析4 结论5 参考文献 摘 要 针对车载移动测量系统获取的城市道路点云场景巨大、目标复杂多样&#xff0c;多期道路场景重访车载…

【并发专题】操作系统模型及三级缓存架构

目录 课程内容一、冯诺依曼计算机模型详解1.计算机五大核心组成部分2.CPU内部结构3.CPU缓存结构4.CPU读取存储器数据过程5.CPU为何要有高速缓存 学习总结 课程内容 一、冯诺依曼计算机模型详解 现代计算机模型是基于-冯诺依曼计算机模型 计算机在运行时&#xff0c;先从内存中…

二、SQL-6.DCL-2).权限控制

*是数据库和表的通配符&#xff0c;出现在数据库位置上表示所有数据库&#xff0c;出现在表名位置上&#xff0c;表示所有表 %是主机名的通配符&#xff0c;表示所有主机。 e.g.所有数据库&#xff08;*&#xff09;的所有表&#xff08;*&#xff09;的所有权限&#xff08;a…

jeecgboot新建moudle,但是访问404,需要在open moudle setting 里面设置

jeecgboot新建moudle&#xff0c;但是访问404&#xff0c;需要在open moudle setting 里面设置 首先需要确定以下3个pom.xml 最最外层的pom.xml 最最外层的pom.xml <modules><module>jeecg-boot-base-core</module><module>jeecg-module-demo</m…

IDEA将本地项目上传到码云

一、创建本地仓库并关联 用IDEA打开项目&#xff0c;在菜单栏点击vcs->create git repository创建本地仓库&#xff0c; 选择当前项目所在的文件夹当作仓库目录。 二、将项目提交本地仓库 项目名右键就会出现“GIT”这个选项->Add->Commit Directory, 先将项目add…

真正帮你实现—MapReduce统计WordCount词频,并将统计结果按出现次数降序排列

项目整体介绍 对类似WordCount案例的词频统计&#xff0c;并将统计结果按出现次数降序排列。 网上有很多帖子&#xff0c;均用的相似方案&#xff0c;重写某某方法然后。。。运行起来可能会报这样那样的错误&#xff0c;这里实现了一种解决方案&#xff0c;分享出来供大家参考…

力扣 968. 监控二叉树

题目来源&#xff1a;https://leetcode.cn/problems/binary-tree-cameras/description/ C题解&#xff08;来源代码随想录&#xff09;&#xff1a;节点可以分为3个状态&#xff1a;0无覆盖&#xff1b;1有摄像头&#xff1b;2有覆盖。 要想放的摄像头最少&#xff0c;应当叶子…

SOC FPGA之HPS模型设计(一)

目录 一、建立HPS硬件系统模型 1.1 GHRD 1.2 从0开始搭建HPS 1.2.1 FPGA Interfaces 1.2.1.1 General 1.2.1.2 AXI Bridge 1.2.1.3 FPGA-to-HPS SDRAM Interface 1.2.1.4 DMA Peripheral Request 1.2.1.5 Interrupts 1.2.1.6 EMAC ptp interface 1.2.2 Peripheral P…