Qt中Widget及其子类的相对位置移动
Qt中Widget及其子类的相对位置移动
- 最后更新日期:2025.01.25
下面让我们开始今天的主题…
一、开启篇

- 提出问题:请看上图,我们想要实现的效果是控件黄色的Widge(m_infobarWidget)t随着可视化窗口(m_glWidget )的移动而移动。
- 基本解决方案:实现的想法很简单,我们在move或者resize的事件的事件中调用黄色Widget的move函数就实现同步移动。
那么,我开始根据上面的想法,直觉的写出了以下代码:
bool MainWindow::eventFilter(QObject *watched, QEvent *event) {if (event->type() == QEvent::Resize || event->type() == QEvent::Move) {if (m_glWidget && m_infobarWidget) {auto glPos = m_glWidget->pos();m_infobarWidget->move(glPos);}}return false;
}
但是效果呢?

我是tm,在这里试了好多次,都哭了>-_-<,哈哈,开玩笑的,反正在这里搞了好久。
最后,查询手册,发现QMidget及其之类的move()函数传入的参数坐标是基于父类的位置,也就是说比如:
m_infobarWidget->move(QPoint(1,1));
那么,m_infobarWidget的位置是基于他父类的左上角向右边和下边移动1。所以为了计算m_infobarWidget在其父类的相对值,我们首先需要获取m_glWidget在全局的位置
//这里获取m_glWidget的(0,0)点映射到全局的坐标
auto globPos =m_glWidget->mapToGlobal(QPoint(0, 0));
然后,需要将全局坐标点映射到m_infobarWidget父类的相对值。
//这里m_infobarWidget是MainWindow的成员函数,这里将全局坐标转换为父类下的相对坐标
auto relaPos=mapFromGlobal(globPos);
下面是完整代码:
bool MainWindow::eventFilter(QObject *watched, QEvent *event) {if (event->type() == QEvent::Resize || event->type() == QEvent::Move) {// 将infobar移动到opengl窗口的定定位点。if (m_glWidget && m_infobarWidget) {// 拿到m_glWidget局部坐标为(0,0)在全局的坐标auto globPos = m_glWidget->mapToGlobal(QPoint(0, 0));// 获取全局坐标在MainWindow下的局部坐标m_infobarWidget->move(mapFromGlobal(globPos));}}return false;
}
相关文章:
Qt中Widget及其子类的相对位置移动
Qt中Widget及其子类的相对位置移动 最后更新日期:2025.01.25 下面让我们开始今天的主题… 一、开启篇 提出问题:请看上图,我们想要实现的效果是控件黄色的Widge(m_infobarWidget)t随着可视化窗口(m_glWidge…...
MyBatis 关联映射详解
目录 一、创建表结构 1. 学生表 (student) 2. 教师表 (teacher) 二、一对一 & 多对一 关系映射 1. 连表查询(直接查询) 2. 分步查询(懒加载) 三、一对多 关系映射 1. 直接查询 2. 分步查询 四、MyBatis 延迟加载&am…...
Shell特殊位置变量以及常用内置变量总结
目录 1. 特殊的状态变量 1.1 $?(上一个命令的退出状态) 1.2 $$(当前进程的 PID) 1.3 $!(后台进程的 PID) 1.4 $_(上一条命令的最后一个参数) 2.常用shell内置变量 2.1 echo&…...
LeetCode:96.不同的二叉搜索树
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:96.不同的二叉搜索树 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉…...
基于Springboot的智能学习平台系统【附源码】
基于Springboot的智能学习平台系统 效果如下: 系统登陆页面 系统主页面 课程详情页面 论坛页面 考试页面 试卷管理页面 考试记录页面 错题本页面 研究背景 随着互联网技术的普及,人们探索知识的方式逐渐转向数字化平台。传统的教学方法通常局限于固定…...
DeepSeek助力学术文献搜索!
搜集文献 宝子们如果是第一次发表学术论文,论文往往是会署名多个作者。在这种情况下,即便成功发表了论文,独立撰作或主导写作的挑战仍旧存在。那么,怎样才能独立地完成一篇属于自己的学术论文呢?对于初次尝试学术论文…...
阿里:基于路由和规划的多agent系统
📖标题:Talk to Right Specialists: Routing and Planning in Multi-agent System for Question Answering 🌐来源:arXiv, 2501.07813 🌟摘要 🔸利用大型语言模型(LLM),…...
@RestControllerAdvice 的作用
系列博客目录 文章目录 系列博客目录1.ControllerAdvice 有什么用主要功能 2.与 RestControllerAdvice 的区别3.苍穹外卖中的使用4.RestControllerAdvice可以指定范围吗(1)指定应用到某些包中的 RestController(2)指定应用到具有特…...
k均值聚类将数据分成多个簇
K-Means 聚类并将数据分成多个簇,可以使用以下方法: 实现思路 随机初始化 K 个聚类中心计算每个点到聚类中心的距离将点分配到最近的簇更新聚类中心重复上述过程直到收敛 完整代码: import torch import matplotlib.pyplot as pltdef kme…...
书生大模型实战营2
L0——入门岛 Python基础 Conda虚拟环境 虚拟环境是Python开发中不可或缺的一部分,它允许你在不同的项目中使用不同版本的库,避免依赖冲突。Conda是一个强大的包管理器和环境管理器。 创建新环境 首先,确保你已经安装了Anaconda或Minico…...
Excel 技巧21 - Excel中整理美化数据实例,Ctrl+T 超级表格(★★★)
本文讲Excel中如何整理美化数据的实例,以及CtrlT 超级表格的常用功能。 目录 1,Excel中整理美化数据 1-1,设置间隔行颜色 1-2,给总销量列设置数据条 1-3,根据总销量设置排序 1-4,加一个销售趋势列 2&…...
前端——js高级25.1.27
复习:对象 问题一: 多个数据的封装提 一个对象对应现实中的一个事物 问题二: 统一管理多个数据 问题三: 属性:组成:属性名属性值 (属性名为字符串,属性值任意) 方…...
学习数据结构(4)顺序表+单链表
1.顺序表算法题 题三: 2.单链表 (1)概念 链表是⼀种物理存储结构上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 (2)节点 节点的组成主要有两个部分:当前节点要保…...
GIS 中的 SQLAlchemy:空间数据与数据库之间的桥梁
利用 SQLAlchemy 在现代应用程序中无缝集成地理空间数据导言 地理信息系统(GIS)在管理城市规划、环境监测和导航系统等各种应用的空间数据方面发挥着至关重要的作用。虽然 PostGIS 或 SpatiaLite 等专业地理空间数据库在处理空间数据方面非常出色&#…...
python:斐索实验(Fizeau experiment)
斐索实验(Fizeau experiment)是在1851年由法国物理学家阿曼德斐索(Armand Fizeau)进行的一项重要实验,旨在测量光在移动介质中的传播速度。这项实验的结果对当时的物理理论产生了深远的影响,并且在后来的相…...
MySQL查询优化(三):深度解读 MySQL客户端和服务端协议
如果需要从 MySQL 服务端获得很高的性能,最佳的方式就是花时间研究 MySQL 优化和执行查询的机制。一旦理解了这些,大部分的查询优化是有据可循的,从而使得整个查询优化的过程更有逻辑性。下图展示了 MySQL 执行查询的过程: 客户端…...
vue3相关知识点
title: vue_1 date: 2025-01-28 12:00:00 tags:- 前端 categories:- 前端vue3 Webpack ~ vite vue3是基于vite创建的 vite 更快一点 一些准备工作 准备后如图所示 插件 Main.ts // 引入createApp用于创建应用 import {createApp} from vue // 引入App根组件 import App f…...
基于springboot+vue的流浪动物救助系统的设计与实现
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
MySQL(单表访问)
今天是新年,祝大家新年快乐,但是生活还是得继续。 后面也会持续更新,学到新东西会在其中补充。 建议按顺序食用,欢迎批评或者交流! 缺什么东西欢迎评论!我都会及时修改的! 大部分截图和文章采…...
UE5.3 C++ CDO的初步理解
一.UObject UObject是所有对象的基类,往上还有UObjectBaseUtility。 注释:所有虚幻引擎对象的基类。对象的类型由基于 UClass 类来定义。 这为创建和使用UObject的对象提供了 函数,并且提供了应在子类中重写的虚函数。 /** * The base cla…...
Qwen3-ForcedAligner计算机网络应用:分布式语音标注系统
Qwen3-ForcedAligner计算机网络应用:分布式语音标注系统 1. 为什么需要分布式语音标注系统 语音数据标注是构建高质量语音识别系统的基石,但传统标注方式正面临三重困境。想象一下,一个语音技术团队每天要处理上千小时的方言录音、会议对话…...
AIVideo一键部署指南:开箱即用的AI视频创作平台
AIVideo一键部署指南:开箱即用的AI视频创作平台 1. 平台概览:从主题到视频的全流程自动化 AIVideo是一款革命性的AI视频创作工具,它能将您的文字主题自动转化为专业级视频作品。想象一下,您只需输入一个简单的想法,比…...
3步搞定电子课本下载,效率提升80%:教师与家长的教育资源获取神器
3步搞定电子课本下载,效率提升80%:教师与家长的教育资源获取神器 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具 项目地址: https://gitcode.com/GitHub_Trending/tc/tchMaterial-parser 在数字化教学日益普及的今…...
FastAdmin框架旧版本踩坑记:手把手教你修复那个能读任意文件的CVE-2024-7928漏洞
FastAdmin框架安全实战:深度解析CVE-2024-7928漏洞修复与防御策略 当安全扫描报告突然标红显示"FastAdmin框架存在任意文件读取漏洞(CVE-2024-7928)"时,作为项目负责人的你可能会瞬间心跳加速。这个看似简单的漏洞编号背…...
Mathematica三维绘图进阶技巧:从基础函数到自定义复杂曲面
Mathematica三维绘图进阶技巧:从基础函数到自定义复杂曲面 当你第一次看到Mathematica生成的那些令人惊叹的三维图形时,可能会觉得背后需要复杂的代码和算法。但实际上,只要掌握几个关键函数和技巧,你也能轻松创建专业级的三维可…...
Vitis 2022.1下,Ultrascale+ MPSOC PL端lwIP以太网完整配置流程(含约束文件与时钟设置)
Vitis 2022.1环境下Ultrascale MPSOC PL端lwIP以太网全流程实战指南 当我们需要在Zynq Ultrascale MPSOC平台上实现高性能网络通信时,PL端以太网方案往往能提供比PS端更灵活的设计空间和更高的吞吐量。本文将手把手带你完成从Vivado工程创建到Vitis应用部署的完整流…...
终极魔兽争霸III优化工具:WarcraftHelper完整配置指南
终极魔兽争霸III优化工具:WarcraftHelper完整配置指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸III作为经典即时战略游戏&a…...
ORA-22816: RETURNING子句不支持功能对比,Oracle故障修复与远程处理方案选择
ORA-22816: RETURNING子句不支持功能对比,Oracle故障修复与远程处理方案选择 最近,一些Oracle数据库管理员在技术论坛上提到,在执行涉及LOB字段的更新操作时,偶尔会遇到ORA-22816错误。例如,一位开发者在2024年5月尝试在一个大型…...
granite-4.0-h-350m从部署到应用:Ollama本地大模型在法律文书处理中的案例
granite-4.0-h-350m从部署到应用:Ollama本地大模型在法律文书处理中的案例 1. 快速上手:granite-4.0-h-350m模型部署 granite-4.0-h-350m是一个轻量级的指令跟随模型,专门为本地部署和特定领域应用而设计。这个模型只有3.5亿参数࿰…...
【STM32HAL库实战】DAC精准输出0-3.3V可调电压与ADC自检闭环
1. DAC与ADC的基础原理 在嵌入式系统中,数字信号和模拟信号的相互转换是常见需求。STM32微控制器内置了DAC(数字模拟转换器)和ADC(模拟数字转换器)模块,让我们能够轻松实现这种转换。 DAC的作用是将数字量转…...
