QT QCombox QSS样式问题

/*combobox 样式*/
QComboBox#FileterComboBox,QComboBox#DateRangeComboBox{background-color: #262626;     /* 背景颜色 */color: #e0e0e0;     /* 文本颜色 */border-radius:16px;font-family: "Microsoft YaHei";    /* 文本字体族 */font-size: 18px;    /* 文本字体大小 */padding-left: 16px;
}QComboBox#FileterComboBox::drop-down,QComboBox#DateRangeComboBox::drop-down{width:20px;height:20px;subcontrol-position: right;border:none;
}
QComboBox#FileterComboBox::down-arrow,QComboBox#DateRangeComboBox::down-arrow{border-image: url("../../data/icon/en/default/icon_arrow_down_hw20.png");
}QComboBox#FileterComboBox QAbstractItemView::item,
QComboBox#DateRangeComboBox QAbstractItemView::item{height:32px;color:#e0e0e0;padding-left: 16px;}QComboBox#FileterComboBox QAbstractItemView,
QComboBox#DateRangeComboBox QAbstractItemView{background:rgba(31, 31, 31,1);min-width:240px;
}
QComboBox#FileterComboBox QAbstractItemView::item:hover,
QComboBox#DateRangeComboBox QAbstractItemView::item:hover{background-color:#feb439;color:black;
}
QComboBox#FileterComboBox QAbstractItemView::item:selected,
QComboBox#DateRangeComboBox QAbstractItemView::item:selected{background-color:#feb439;color:black;}

上面是我QCombobx的样式,我想到的是文字距离左侧16px;实际效果图如下:

后面我去单独写一个QCombobox的Demo发现了问题,按照我上面写的qss样式,如果不在` QAbstractItemView::item`添加`background:rgba(31, 31, 31,1);`会出现上面问题。添加之后一切正常。

QComboBox#FileterComboBox QAbstractItemView::item,
QComboBox#DateRangeComboBox QAbstractItemView::item{background:rgba(31, 31, 31,1);height:32px;color:#e0e0e0;padding-left: 16px;}

为什么在` QAbstractItemView::item`添加`background:rgba(31, 31, 31,1);`之后就正常了呢?

下面是AI给我的答复:

1:Gemini

你说得对。移除 background:rgba(31, 31, 31,1); 确实可能导致下拉列表的 Item 文字在某些情况下出现跳动或闪烁的现象,尤其是在鼠标悬停或选择 Item 时。这是因为背景色的变化会触发重绘,而没有明确的背景色可能会导致重绘区域不一致,从而产生视觉上的跳动。以下是更详细的解释:重绘机制: 当鼠标悬停在一个 Item 上时,会触发 hover 状态,需要改变 Item 的背景色(在你的代码中是 #feb439)。这个改变需要进行重绘,即重新绘制 Item 的外观。布局和尺寸计算: 在重绘过程中,Qt 需要重新计算 Item 的布局和尺寸。如果没有明确的背景色,Qt 可能会基于文本内容来计算 Item 的大小。由于文本渲染在不同平台上可能存在细微差异,加上字体抗锯齿等因素,每次重绘计算出的 Item 尺寸可能会有轻微变化。跳动现象: 这些微小的尺寸变化会在视觉上表现为文字的跳动或闪烁。尤其是在快速移动鼠标时,连续触发 hover 状态,这种跳动会更加明显。background 的作用: background:rgba(31, 31, 31,1); 的作用不仅仅是设置背景色,更重要的是它为 Item 提供了一个稳定的背景区域。这个固定的背景区域使得 Qt 在重绘时只需要简单地改变背景颜色,而不需要重新计算 Item 的尺寸,从而避免了跳动现象。总结来说: background 属性为 Item 建立了一个稳定的绘制区域,避免了因文本渲染或布局计算的微小变化而导致的跳动。即使背景色与父元素相同,这个属性仍然很重要,因为它稳定了 Item 的绘制区域。其他可能导致跳动的因素:字体渲染: 不同的字体渲染引擎在处理字体抗锯齿等方面可能存在差异,这也会影响 Item 的尺寸计算,从而导致跳动。
Item 高度: 如果 Item 的高度没有明确设置,Qt 可能会根据文本内容动态调整高度,这也会导致跳动。你的代码中设置了 height:32px;,这是一个很好的做法,可以减少这种可能性。
父元素布局: 父元素的布局方式也可能影响 Item 的显示。例如,如果父元素使用了动态布局,可能会导致 Item 的位置或大小发生变化。
建议:保留 background 属性: 即使背景色与父元素相同,也应该保留 background 属性,以确保 Item 的绘制稳定。
固定 Item 高度: 像你代码中那样设置 height:32px;,可以有效避免因高度变化导致的跳动。
检查字体渲染: 尽量使用一致的字体和字体渲染设置,以减少因字体渲染差异导致的跳动。
通过以上措施,可以有效地避免或减少下拉列表 Item 文字跳动的现象,提升用户体验。

2:chatgpt

感觉解释的有一定的道理。

如果有大佬知道请留下评论,帮忙答疑。谢谢。

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

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

相关文章

Unittest02|TestSuite、TestRunner、HTMLTestRunner、处理excel表数据、邮件接收测试结果

目录 八、测试套件TestSuite和测试运行器TestRunner 1、基本概念 2、创建和使用测试套件 3、 自动发现测试用例、创建测试套件、运行测试 4、生成html的测试报告:HTMLTestRunner 1️⃣导入HTMLTestRunner模块 2️⃣运行测试用例并生成html文件 九、unittest…

NIPS2014 | GAN: 生成对抗网络

Generative Adversarial Nets 摘要-Abstract引言-Introduction相关工作-Related Work对抗网络-Adversarial Nets理论结果-Theoretical Results实验-Experiments优势和不足-Advantages and disadvantages缺点优点 结论及未来工作-Conclusions and future work研究总结未来研究方…

【已解决】pyinstaller打包ico图片报错:OSError: [WinError 225] 无法成功完成操作,因为文件包含病毒或潜在的垃圾软件。

起因: pyinstaller加上 --icon 参数打包时报错。 命令如下: 解决: 关闭 Windows 的病毒防护即可,步骤如下。 点屏幕右下角通知栏,进入“病毒和威胁防护”: 打开: 关闭实时保护&#xff08…

011-spring-整合三方框架的命名空间原理(重要)

根据context标签来学习了解 <context:property-placeholder location"jdbc.properties"/> <bean id"dataSource" class"com.alibaba.druid.pool.DruidDataSource"><property name"driver" value"${db.driver}&quo…

No.29 笔记 | CTF 学习干货

大家好呀&#xff01;我刚参加了美国线上CTF比赛&#xff0c;收获超多&#xff0c;特别感谢老师教我的干货知识。今天就和大家分享我的学习笔记。CTF像刺激冒险&#xff0c;有挑战有惊喜。 学习中我懂了很多知识技能&#xff0c;像密码学、Web安全、Misc题型等&#xff0c;它们…

sonarqube 安装及使用

一、官网参考地址 相关版本下载地址 配置全局变量 .bash_profileexport SONAR_HOME=/Users/jd/soft/sonar-scanner-6.2.1.4610 export PATH=$PATH:$SONAR_HOME/bin export SQ_HOST=http://127.0.0.1:9000/ export SQ_TOKEN=squ_dbb1913e095a92a727a918a9ba6b1af94b007748二、…

使用ArcGIS/ArcGIS pro绘制六边形/三角形/菱形渔网图

在做一些尺度分析时&#xff0c;经常会涉及到对研究区构建不同尺度的渔网进行分析&#xff0c;渔网的形状通常为规则四边形。构建渔网的方法也很简单&#xff0c;使用ArcGIS/ArcGIS Pro工具箱中的【创建渔网/CreateFishnet】工具来构建。但如果想构建其他形状渔网进行相关分析&…

pytorch MoE(专家混合网络)的简单实现。

专家混合&#xff08;Mixture of Experts, MoE&#xff09;是一种深度学习模型架构&#xff0c;通常用于处理大规模数据和复杂任务。它通过将输入分配给多个专家网络&#xff08;即子模型&#xff09;&#xff0c;然后根据门控网络&#xff08;gating network&#xff09;的输出…

NAT 技术如何解决 IP 地址短缺问题?

NAT 技术如何解决 IP 地址短缺问题&#xff1f; 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 随着互联网的普及和发展&#xff0c;IP 地址的需求量迅速增加。尤其是 IPv4 地址&…

华为麦芒5(安卓6)termux记录 使用ddns-go,alist

下载0.119bate1版,不能换源,其他源似乎都用不了,如果root可以直接用面具模块 https://github.com/termux/termux-app/releases/download/v0.119.0-beta.1/termux-app_v0.119.0-beta.1apt-android-5-github-debug_arm64-v8a.apk 安装ssh(非必要) pkg install openssh开启ssh …

FPC在蓝牙耳机中有哪些应用?【新立电子】

随着科技的进步和消费者需求的提升&#xff0c;耳机已经从传统的有线连接转变为现在的无线蓝牙耳机&#xff0c;真正做到了便捷出行与极佳的用户体验。而FPC在蓝牙耳机中的应用主要体现在优化耳机的设计与性能上。 蓝牙耳机&#xff0c;主要使用方式是与手机、电脑等移动设备通…

《计算机组成及汇编语言原理》阅读笔记:p121-p122

《计算机组成及汇编语言原理》学习第 8 天&#xff0c;p121-p122 总结&#xff0c;总计 2 页。 一、技术总结 1.memory优化 (1)cache memory remove blank from “Most computers support two different kinds (levels) of cache: level one (L1) cache is built into the …

ffmpeg: stream_loop报错 Error while filtering: Operation not permitted

问题描述 执行ffmpeg命令的时候&#xff0c;报错&#xff1a;Error while filtering: Operation not permitted 我得命令如下 ffmpeg -framerate 25 -y -i /data/workerspace/mtk/work_home/mtk_202406111543-l9CSU91H1f1b3/tmp/%08d.png -stream_loop -1 -i /data/workerspa…

【微信小程序】1|底部图标 | 我的咖啡店-综合实训

底部图标 引言 在微信小程序开发中&#xff0c;底部导航栏&#xff08;tabBar&#xff09;是用户界面的重要组成部分&#xff0c;它为用户提供了快速切换不同页面的功能。今天&#xff0c;我们将通过一个实际案例——“我的咖啡店”小程序&#xff0c;来详细解析如何配置底部图…

c++编译过程初识

编译过程 预处理&#xff1a;主要是执行一些预处理指令&#xff0c;主要是#开头的代码&#xff0c;如#include 的头文件、#define 定义的宏常量、#ifdef #ifndef #endif等条件编译的代码&#xff0c;具体包括查找头文件、进行宏替换、根据条件编译等操作。 g -E example.cpp -…

Springboot高并发乐观锁

Spring Boot分布式锁的主要缺点包括但不限于以下几点&#xff1a; 性能开销&#xff1a;使用分布式锁通常涉及到网络通信&#xff0c;这会引入额外的延迟和性能开销。例如&#xff0c;当使用Redis或Zookeeper实现分布式锁时&#xff0c;每次获取或释放锁都需要与这些服务进行交…

揭秘 Fluss 架构组件

这是 Fluss 系列的第四篇文章了&#xff0c;我们先回顾一下前面三篇文章主要说了哪些内容。 Fluss 部署&#xff0c;带领大家部署Fluss 环境&#xff0c;体验一下 Fluss 的功能Fluss 整合数据湖的操作&#xff0c;体验Fluss 与数据湖的结合讲解了 Fluss、Kafka、Paimon 之间的…

leetcode82:删除链表中的重复元素II

原题地址&#xff1a;82. 删除排序链表中的重复元素 II - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&…

【面试经典】多数元素

链接&#xff1a;169. 多数元素 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 在本文中&#xff0c;“数组中出现次数超过一半的数字” 被称为 “众数” 。 需要注意的是&#xff0c;数学中众数的定义为 “数组中出现次数最多的数字” &#xff0c;与本文定…

AT24C02学习笔记

看手册&#xff1a; AT24Cxx xx代表能写入xxK bit(xx K)/8 byte 内部写周期很关键&#xff0c;代表每一次页写或字节写结束后时间要大于5ms&#xff08;延时5ms确保完成写周期&#xff09;&#xff0c;否则时序会出错。 页写&#xff1a;型不同号每一页可能写入不同大小的…