二十、Qt位置相关函数

 


目录

一、函数概述

 二、函数实践

 三、总结


一、函数概述

        Qt 提供了很多关于获取窗体位置及显示区域大小的函数,如 x()、y()和 pos()、react()、size()、geometry()等,统称为“位置相关函数”或“位置函数”, 如下图所示是几种主要的位置函数,图中清楚地标出了它们之间的区别。

 二、函数实践

geometry.h

#ifndef GEOMETRY_H
#define GEOMETRY_H#include <QDialog>
#include <QLabel>
#include <QGridLayout>class Geometry : public QDialog
{Q_OBJECTpublic:Geometry(QWidget *parent = 0);~Geometry();void updateLabel();
private:QLabel *xLabel;QLabel *xValueLabel;QLabel *yLabel;QLabel *yValueLabel;QLabel *FrmLabel;QLabel *FrmValueLabel;QLabel *posLabel;QLabel *posValueLabel;QLabel *geoLabel;QLabel *geoValueLabel;QLabel *widthLabel;QLabel *widthValueLabel;QLabel *heightLabel;QLabel *heightValueLabel;QLabel *rectLabel;QLabel *rectValueLabel;QLabel *sizeLabel;QLabel *sizeValueLabel;QGridLayout *mainLayout;
protected:void moveEvent(QMoveEvent *);void resizeEvent(QResizeEvent *);
};#endif // GEOMETRY_H

geometry.cpp

#include "geometry.h"Geometry::Geometry(QWidget *parent): QDialog(parent)
{setWindowTitle(tr("Geometry"));xLabel =new QLabel(tr("x():"));xValueLabel =new QLabel;yLabel =new QLabel(tr("y():"));yValueLabel =new QLabel;FrmLabel =new QLabel(tr("Frame:"));FrmValueLabel =new QLabel;posLabel =new QLabel(tr("pos():"));posValueLabel =new QLabel;geoLabel =new QLabel(tr("geometry():"));geoValueLabel =new QLabel;widthLabel =new QLabel(tr("width():"));widthValueLabel =new QLabel;heightLabel =new QLabel(tr("height():"));heightValueLabel =new QLabel;rectLabel =new QLabel(tr("rect():"));rectValueLabel =new QLabel;sizeLabel =new QLabel(tr("size():"));sizeValueLabel =new QLabel;mainLayout =new QGridLayout(this);mainLayout->addWidget(xLabel,0,0);mainLayout->addWidget(xValueLabel,0,1);mainLayout->addWidget(yLabel,1,0);mainLayout->addWidget(yValueLabel,1,1);mainLayout->addWidget(posLabel,2,0);mainLayout->addWidget(posValueLabel,2,1);mainLayout->addWidget(FrmLabel,3,0);mainLayout->addWidget(FrmValueLabel,3,1);mainLayout->addWidget(geoLabel,4,0);mainLayout->addWidget(geoValueLabel,4,1);mainLayout->addWidget(widthLabel,5,0);mainLayout->addWidget(widthValueLabel,5,1);mainLayout->addWidget(heightLabel,6,0);mainLayout->addWidget(heightValueLabel,6,1);mainLayout->addWidget(rectLabel,7,0);mainLayout->addWidget(rectValueLabel,7,1);mainLayout->addWidget(sizeLabel,8,0);mainLayout->addWidget(sizeValueLabel,8,1);updateLabel();
}Geometry::~Geometry()
{}void Geometry::updateLabel()
{QString xStr;                      	//获得x()函数的结果并显示xValueLabel->setText(xStr.setNum(x()));QString yStr;                      	//获得y()函数的结果并显示yValueLabel->setText(yStr.setNum(y()));QString frameStr;                 	//获得frameGeometry()函数的结果并显示QString tempStr1,tempStr2,tempStr3,tempStr4;frameStr = tempStr1.setNum(frameGeometry().x())+","+tempStr2.setNum(frameGeometry().y())+","+tempStr3.setNum(frameGeometry().width())+","+tempStr4.setNum(frameGeometry().height());FrmValueLabel->setText(frameStr);QString positionStr;            	//获得pos()函数的结果并显示QString tempStr11,tempStr12;positionStr =tempStr11.setNum(pos().x())+","+tempStr12.setNum(pos().y());posValueLabel->setText(positionStr);QString geoStr;               		//获得geometry()函数的结果并显示QString tempStr21,tempStr22,tempStr23,tempStr24;geoStr =tempStr21.setNum(geometry().x())+","+tempStr22.setNum(geometry().y())+","+tempStr23.setNum(geometry().width())+","+tempStr24.setNum(geometry().height());geoValueLabel->setText(geoStr);QString wStr,hStr;                  //获得width()、height()函数的结果并显示widthValueLabel->setText(wStr.setNum(width()));heightValueLabel->setText(hStr.setNum(height()));QString rectStr;                    //获得rect()函数的结果并显示QString tempStr31,tempStr32,tempStr33,tempStr34;rectStr =tempStr31.setNum(rect().x())+","+tempStr32.setNum(rect().y())+","+tempStr33.setNum(/*rect().width()*/width())+","+tempStr34.setNum(height()/*rect().height()*/);rectValueLabel->setText(rectStr);QString sizeStr;                 	//获得size()函数的结果并显示QString tempStr41,tempStr42;sizeStr =tempStr41.setNum(size().width())+","+tempStr42.setNum(size().height());sizeValueLabel->setText(sizeStr);
}void Geometry:: moveEvent(QMoveEvent *)
{updateLabel();
}void Geometry::resizeEvent(QResizeEvent *)
{updateLabel();
}

main.cpp

#include "geometry.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Geometry w;w.show();return a.exec();
}

效果展示:

 三、总结

        在实际应用中需要根据情况使用正确的位置信息函数以获得准确的位置尺寸信息,尤其是在编写对位置精度要求较高的程序 (如地图浏览程序) 时,更应注意函数的选择,避免产生不必要的误差。

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

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

相关文章

JS 鼠标拖动实现移动滚动条的滚动效果

效果 现在很多场景都以移动端为基本开发&#xff0c;比如说需要隐藏滚动条&#xff0c;在pc上实现鼠标拖动和手机触摸拖动差不多的效果。 实现 以mdn的overflow属性中范例为基础&#xff0c;内容溢出时候可使用overflow: auto;和overflow: scroll;实现滚动效果。 要实现鼠标…

华为防火墙总部与分支机构建立IPsec VPN涉及NAT穿越

一、IPsec VPN基本概念 1、隧道建立方式&#xff1a;分为手动建立和IKE自动协商&#xff0c;手动建立需要人为配置指定所有IPsec建立的所有参数信息&#xff0c;不支持为动态地址的发起方&#xff0c;实际网络中很少应用&#xff1b;IKE协议是基于密钥管理协议ISAKMP框架设计而…

一文看懂AI的 Transformer 架构!

1 AI的转换器是啥&#xff1f; 转换器&#xff0c;一种将输入序列转换或更改为输出序列的神经网络架构。它们通过学习上下文和跟踪序列组件之间的关系来做到这一点。例如&#xff0c;请考虑以下输入序列&#xff1a;“天空是什么颜色的&#xff1f;” 转换器模型会使用内部数学…

C4D2024软件下载+自学C4D 从入门到精通【学习视频教程全集】+【素材笔记】

软件介绍与下载&#xff1a; 链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1n8cripcv6ZTx4TBNj5N04g?pwdhfg5 提取码&#xff1a;hfg5 基础命令的讲解&#xff1a; 掌握软件界面和基础操作界面。学习常用的基础命令&#xff0c;如建模、材质、灯光、摄像机…

TypeScript体操(一):从基础到进阶

目录 前言Utility Types 是什么&#xff1f;常用 Utility Types前置知识typeofkeyoftypeof 和 keyof 的区别never 关键字extends 关键字结合条件判断infer 类型推断&#xff08;模式匹配&#xff09;判断是与非判断两个类型是否相等或兼容 循环递归嵌套字符串数组协变&#xff…

NMEA2000在船舶控制系统中航空插头插座组件特性

NMEA2000在船舶控制系统中的应用概述 NMEA2000协议是船舶电子设备之间通信的国际标准&#xff0c;广泛应用于船舶导航、监控和自动化系统。它基于CAN&#xff08;Controller Area Network&#xff09;总线技术&#xff0c;以确保在恶劣环境下的可靠性和效率。NMEA2000协议定义了…

英语语法第八课副词

文章目录 1、副词分类1.1 时间副词&#xff0c;表示时间或频率1.2 地点副词&#xff0c;表示地点或位置1.3 方式副词&#xff0c;表示行为方式1.4 程度副词&#xff0c;表示动作程度1.5 疑问副词&#xff0c;引导特殊疑问句1.6 强调副词&#xff0c;强调形容词或动词1.7 连接副…

隐语隐私计算实训营「联邦学习」第 5 课:基于隐私保护的机器学习算法介绍

【隐私计算实训营】是蚂蚁集团隐语开源社区出品的线上课程&#xff0c;自实训营上线以来&#xff0c;获得行业内外广泛关注&#xff0c;吸引上千余名开发者报名参与。本次暑期夏令营课程中&#xff0c;除了最新上线的「联邦学习系列」&#xff0c;还包含了「隐私保护数据分析」…

Java项目实战springboot校园失物招领系统

✌网站介绍&#xff1a;✌10年项目辅导经验、专注于计算机技术领域学生项目实战辅导。 ✌服务范围&#xff1a;Java(SpringBoo/SSM)、Python、PHP、Nodejs、爬虫、数据可视化、小程序、安卓app、大数据等设计与开发。 ✌服务内容&#xff1a;免费功能设计、免费提供开题答辩P…

3D建模软件--犀牛Rhino for Mac

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功 三、运行测试安装完成&#xff01;&#xff01;&#xff01; 效果 一、下载软件 下载软件…

初学Mybatis之配置解析

MyBatis 中文网配置教程 mybatis-config.xml 环境配置&#xff08;environments&#xff09; 尽管可以配置多个环境&#xff0c;但每个 SqlSessionFactory 实例只能选择一种环境 可以有多个 enviroment&#xff0c;但是 enviroments default&#xff08;默认&#xff09;只…

动态规划题目:单词拆分/三角形最小路径和 - leetcode

动态规划思想 / 步骤 &#xff1a; 先将 当前要求 总结成一个 精炼的 小问题 &#xff0c; 然后 将 求解题目 转换为 求解N个 小问题 &#xff0c; 每个小问题的 求解过程相同 &#xff0c;但是 过程涉及 的 数据 是不同的 &#xff0c; 例如第三个 小问…

c++网络编程实战——开发基于ftp协议的文件传输模块(二) 配置ftp服务与手动执行ftp命令

配置FTP服务 一.前言 博主的环境是阿里云服务器&#xff0c;操作系统版本为 ubuntu20.04,一下所有操作都基于以上环境下进行的操作&#xff0c;同时为了简化操作我将开放同一个云服务器的不同端口&#xff0c;让它同时充当服务端和客户端&#xff0c;大家如果想测试效果更好且…

WPF串口通讯程序

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 using HardwareCommunications; using System.IO.Ports; using System.Windows;namespace PortTest {/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainW…

软件缺陷(Bug)、禅道

目录 软件缺陷的判定标准 软件缺陷的核心内容 构成缺陷的基本要素 缺陷报告 缺陷管理 缺陷的跟踪流程 项目管理工具--禅道 软件在使用过程中存在的任何问题&#xff08;如&#xff1a;错误、异常等&#xff09;&#xff0c;都叫软件的缺陷&#xff0c;简称bug。 软件缺…

如何选择海洋船舶用总线NMEA 2000连接器

NMEA 2000连接器概述 NMEA 2000连接器是现代船舶通信系统中不可或缺的部分&#xff0c;主要用于连接船上各种电子设备&#xff0c;实现数据传输和设备控制。这些连接器遵循NMEA 2000协议标准&#xff0c;支持高速数据传输&#xff0c;并具有良好的防水、耐腐蚀性能&#xff0c…

神经网络之循环神经网络

目录 一、循环神经网络概述&#xff1a;1.传统神经网络与循环神经网络的区别&#xff1a;2.循环神经网络定义&#xff1a; 图片来自&#xff1a;深度学习———循环神经网络 一、循环神经网络概述&#xff1a; 1.传统神经网络与循环神经网络的区别&#xff1a; MLP、卷积神经…

【PostgreSQL教程】PostgreSQL 选择数据库

博主介绍:✌全网粉丝20W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。 感兴趣的可…

多目标遗传算法(NSGAⅢ)的原理和matlab实现

参考文献&#xff1a; [1] Deb K , Jain H .An Evolutionary Many-Objective Optimization Algorithm Using Reference-Point-Based Nondominated Sorting Approach, Part I: Solving Problems With Box Constraints[J].IEEE Transactions on Evolutionary Computation, 2014,…

【Simple PIR】单服务器开源最快匿踪查询算法解析

7月17日&#xff0c;我们在《隐私计算匿踪查询技术深入浅出》中介绍了关于隐私计算中匿踪查询的定义和常见算法&#xff0c;并引出了前沿算法Simple PIR的介绍&#xff0c;本次将对Simple PIR进行正式的算法原理介绍。 1. Simple PIR快览 1.1 性能介绍 Simple PIR是Alexandra…