[旧日谈]高清画面撕裂问题考
背景
无边框透明背景透明的窗口,在随着缩放比例非整数倍数放大时的画面发生了露底、撕裂问题。
当我们在使用Qt开发的时候,遇到了一个结构性问题。因为我们的软件是自己做的,所以要自己定义标题栏,所以我们设置了软件为FrameLessWindowhint 和 setAttributes(Qt::WA_TranslucentBackground);,这是非常常见的窗口对吧。但是,当我们面对软件需要随着当前系统的缩放比例(DPI)的变化而变化,这个时候就会出现画面撕裂的问题
缩放比例设置:

当我把画面整体放大调整到1.25倍,即DPI修改到125%的时候,画面变成了如下情况:
画面撕裂示例:


在很多可移动控件之间出现了露底、画面撕裂的问题,非常影响用户体验和工程验收。
原理
为了解决这个问题,我们首先得明白为什么会发生这个问题。
我们假设现在有一个111px x 111px的窗口,当系统DPI为100%的时候,这个窗口在屏幕上显示的大小是111px x 111px。

现在我们将这个窗口放大到原来的125%大小,那么会发生什么?
问题来了,Qt中的窗口,是不支持小数位的,也就是说不存在这么一个12.5px x 12.5px的窗口,那么这个窗口在屏幕上显示的大小是多少呢?
这里我使用qputenv(“QT_SCREEN_SCALE_FACTORS”, “1.25”);强行改变了DPI,然后运行程序,再来使用截图工具来看看这个窗口的具体大小

这个时候这个窗口已经变成了139px了,也就是说这个窗口平白无故多了0.25个像素。当然了,在这样一个画面上看不出什么问题,我们往上面添加一些控件,再来看看效果。

不出所料,这个控件就已经发生了透底(画面撕裂)问题了,因为实际上这个控件的界面大小是错误的,并不是准确的,中间多出来的半个像素,导致了qt整个界面的撕裂问题。
解决方案
升级Qt6,马上解决这个问题
相关文章:
[旧日谈]高清画面撕裂问题考
背景 无边框透明背景透明的窗口,在随着缩放比例非整数倍数放大时的画面发生了露底、撕裂问题。 当我们在使用Qt开发的时候,遇到了一个结构性问题。因为我们的软件是自己做的,所以要自己定义标题栏,所以我们设置了软件为FrameLess…...
Nginx反向代理-域名代理前后端项目部署流程
一、下载Nginx 地址:https://nginx.org/en/download.html 1、稳定版本下载 二、Nginx配置 1、下载文件完成后,解压文件 2、打开文件目录下conf目录,打开找到nginx.conf 3、文件配置 注意:.conf 文件使用文本编辑器编辑后&…...
代码随想录(十二)——图论
并查集 并查集主要有三个功能。 寻找根节点,函数:find(int u),也就是判断这个节点的祖先节点是哪个将两个节点接入到同一个集合,函数:join(int u, int v),将两个节点连在同一个根节点上判断两个节点是否在…...
如何通过 Service Mesh 构建高效、安全的微服务系统
1. 引言 1.1.什么是 Service Mesh? Service Mesh 是一种基础架构层,负责处理微服务之间的通信,它通过在每个服务旁边部署代理(通常称为 Sidecar)来捕获和管理服务间的网络流量。这种方式解耦了微服务的业务逻辑和基础…...
MySQL 临时表详解
在 MySQL 中,临时表(Temporary Table)是一种非常有用的工具,可以帮助我们在执行复杂查询时存储临时数据。临时表的存在时间仅限于会话期,当会话结束后,临时表自动销毁。本文将详细讲解 MySQL 临时表的创建、…...
Kafka系列之:Kafka集群新增节点后实现数据均衡
Kafka系列之:Kafka集群新增节点后实现数据均衡 一、背景二、Kafka集群快速负载均衡方案三、按照Topic负载均衡Kafka系列之:使用Kafka Manager实现leader分区平衡和broker节点上分区平衡一、背景 Kafka集群新增节点,要使得每个节点数据均衡,在增加完kafka topic分区后,要进…...
实验:使用Oxygen发布大型手册到Word格式
此前,我曾发表过一篇文章《结构化文档发布的故事和性能调优》,文中讨论了在将大型DITA手册转换为PDF格式时可能遇到的性能挑战及相应的优化策略。 近日,有朋友咨询,若将同样的大型手册输出为MS Word格式,是否也会面临…...
一个基于.NET8+WPF开源的简单的工作流系统
项目介绍 AIStudio.Wpf.AClient 是一个基于 WPF (Windows Presentation Foundation) 构建的客户端框架,专为开发企业级应用而设计。该项目目前版本为 6.0,进行了全面优化和升级,提供了丰富的功能和模块,以满足不同场景下的开发需…...
MFC工控项目实例二十七添加产品参数
承接专栏《MFC工控项目实例二十六创建数据库》 在型号参数界面添加三个参数试验时间、最小值、最大值。变量为double m_edit_time; double m_edit_min; double m_edit_max; 1、在SEAL_PRESSURE.h中添加代码 class CProductPara { public:union{struct{...double m_edit_min;…...
PgSQL常用SQL语句
PgSQL常用SQL语句 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 PgSQL是一种开源的关系型数据库管理系统,它是PostgreSQL的一种实现。本文将介绍一些常用的PgSQL SQL语句&a…...
python多线程处理xlsx,多进程访问接口
import pandas as pd from concurrent.futures import ThreadPoolExecutor# 读取Excel文件 file_path scence.xlsx df pd.read_excel(file_path)# 定义每10行处理逻辑 def process_rows(start_idx):end_idx min(start_idx 10, len(df)) # 处理每10行for i in range(start_…...
PDF无法转换成其他格式的常见原因与解决方法解析
在处理PDF文件转换时,用户常常会遇到一些问题,导致无法将PDF转换为其他格式(如Word、Excel、或图片等)。以下是一些常见原因以及解决方法的解析。 ## 一、常见原因 ### 1. **PDF文件的安全性设置** 许多PDF文件在创建时可能设置…...
蓝桥杯第二十场小白入门赛
2.黛玉泡茶 我的思路代码:(但我不知道哪有错误) #include<iostream> #include<vector> #include<algorithm> using namespace std;int main(){int n,m,k,res1;cin>>n>>m>>k;vector<int>num(n1,0…...
K 个一组反转链表
力扣第 25 题:K 个一组反转链表 题目描述 给定一个链表,将链表每k个节点一组进行反转,并返回修改后的链表。如果最后一组节点数少于 k,则保持原顺序。 示例 1: 输入:1 -> 2 -> 3 -> 4 -> 5&…...
#深度学习:从基础到实践
深度学习是人工智能领域近年来最为火热的技术之一。它通过构建由多个隐藏层组成的神经网络模型,能够从海量数据中自动学习特征和表征,在图像识别、自然语言处理、语音识别等领域取得了突破性进展。本文将全面介绍深度学习的基础知识、主要算法和实践应用,帮助您快速…...
Android Kotlin中协程详解
博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家, 👉点击跳转到教程 前言 Kotlin协程介绍: Kotlin 协程是 Kotlin 语言中的一种用于处理异步编程的机制。它提供了一…...
【webpack学习】
webpack由于历史包袱导致复杂,只要把握关键流程即可 webpack的主要流程loader plugin难点:HMR / 懒加载 原理webpack 的优化手段 构建工具对比 webpack :可以打包任何资源,配置略复杂,适合项目开发rollup࿱…...
H5实现PDF文件预览,使用pdf.js-dist进行加载
H5实现PDF文件预览,使用pdf.js-dist进行加载 一、应用场景 在H5平台上预览PDF文件是在原本已经开发完成的系统中新提出的需求,原来的系统业务部门是在PC端进行PDF的预览与展示,但是现在设备进行了切换,改成了安卓一体机进行文件…...
面试域——面试系统工程
摘要 1. 当前就业面试场景 1.1. 招聘市场的“551 定律” 你知道招聘市场的“551 定律”吗? 551 定律:每一层筛选环节都会有百分之十的折损率。一个岗位从接收简历到发下 Offer 至少要筛选 500 份左右的简历、面试 50 人左右、只有 5 人左右通过面试&am…...
PHP-FPM 性能配置优化
4 核 8 G 服务器大约可以开启 500 个 PHP-FPM,极限吞吐量在 580 qps (Query Per Second 每秒查询数)左右。 Nginx php-fpm 是怎么工作的? php-fpm 全称是 PHP FastCGI Process Manager 的简称,从名字可得知ÿ…...
FanControl完整指南:免费开源的风扇控制软件让Windows散热管理如此简单
FanControl完整指南:免费开源的风扇控制软件让Windows散热管理如此简单 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/Gi…...
从90%到99%:实战提升Tesseract在C++项目中的识别准确率(附调参技巧)
从90%到99%:实战提升Tesseract在C项目中的识别准确率(附调参技巧) 在工业级文档处理系统中,我们常遇到这样的困境:测试集上的OCR识别准确率卡在90%左右,而业务部门要求必须达到99%以上才能上线。去年负责某…...
VRM Converter for VRChat:打破虚拟化身平台壁垒的技术解决方案
VRM Converter for VRChat:打破虚拟化身平台壁垒的技术解决方案 【免费下载链接】VRMConverterForVRChat 项目地址: https://gitcode.com/gh_mirrors/vr/VRMConverterForVRChat 在虚拟内容创作领域,平台壁垒一直是开发者面临的最大挑战。当你在V…...
Moveit2 automaticaddison mycobot_ros2 代码讲解
github地址 https://github.com/automaticaddison/mycobot_ros2/tree/jazzy 一.mycobot_moveit_config 1.moveit2基本控制 在mycobot_moveit_config下面创建config/mycobot_280 initial_positions.yaml 定义了机械臂所有关节的初始位置 joint_limits.yaml 定义每个关节的…...
中国县城 AI 小店遍地开花:是风口还是陷阱?加盟背后藏“割韭菜”套路
01. AI 赋能县城谁能想到,中国十八线县城的 AI 产业密度直逼硅谷。在县城老街上,能偶遇 AI 面馆、AI 自习室和 AI 送水站,招牌与外墙的违和感十足,山姆奥特曼看了或许会挠头。“任何行业都值得用 AI 重做一遍”,县城小…...
现代化WPF可视化设计引擎:从XAML代码到拖拽式开发的效率革命
现代化WPF可视化设计引擎:从XAML代码到拖拽式开发的效率革命 【免费下载链接】WpfDesigner The WPF Designer from SharpDevelop 项目地址: https://gitcode.com/gh_mirrors/wp/WpfDesigner 在WPF应用程序开发中,手动编写XAML代码进行界面布局是每…...
如何用Mermaid Live Editor构建企业级实时图表系统:架构师的技术选型指南
如何用Mermaid Live Editor构建企业级实时图表系统:架构师的技术选型指南 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/m…...
K8s网络插件Flannel与Calico:从原理到实战的选型与部署指南
1. Kubernetes网络插件基础认知 刚接触Kubernetes时,最让我头疼的就是容器网络问题。为什么Pod之间需要通信?为什么有的服务跨节点就访问不了?这些问题的答案都藏在CNI(Container Network Interface)插件里。Flannel和…...
ViGEmBus虚拟手柄驱动完全指南:Windows游戏手柄兼容性终极解决方案
ViGEmBus虚拟手柄驱动完全指南:Windows游戏手柄兼容性终极解决方案 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否厌倦了在Windows上使用…...
Docker Maven Plugin 最佳实践:企业级Docker化部署的完整解决方案 [特殊字符]
Docker Maven Plugin 最佳实践:企业级Docker化部署的完整解决方案 🚀 【免费下载链接】docker-maven-plugin Maven plugin for running and creating Docker images 项目地址: https://gitcode.com/gh_mirrors/doc/docker-maven-plugin 想要快速实…...
