当前位置: 首页 > news >正文

QIcon::actualSize的作用和用法

QIcon::actualSize 是 Qt 中用于获取图标实际渲染尺寸的关键方法,其核心作用和用法如下:


一、核心作用

  1. 动态尺寸适配
    根据目标设备的显示特性(如高DPI屏幕)和控件状态,返回图标在当前上下文中的最佳渲染尺寸。
  2. 多分辨率支持
    自动匹配系统中最接近请求尺寸的图标变体(如 icon_32x32.png 和 icon_64x64.png)。
  3. 状态感知
    结合图标的 Mode(如正常/禁用状态)和 State(如选中状态)返回对应尺寸。

二、参数与返回值

方法签名:
QIcon icon(":/icons/app.png");
QSize requestedSize(64, 64);  // 请求64x64像素
QSize actualSize = icon.actualSize(requestedSize);  // 可能返回48x48(若无匹配大图)
  • size‌:请求的目标尺寸(逻辑像素),通常为控件尺寸79。
  • mode‌:图标状态模式,可选:
    • QIcon::Normal(默认)
    • QIcon::Disabled
    • QIcon::Active
    • QIcon::Selected
  • state‌:图标状态(如 QIcon::On/Off)。
  • 返回值‌:实际渲染尺寸(QSize),可能小于请求尺寸(如缺少高分辨率图标)。

三、典型用法

1. ‌获取图标适配尺寸
QIcon icon(":/icons/app.png");
QSize requestedSize(64, 64);  // 请求64x64像素
QSize actualSize = icon.actualSize(requestedSize);  // 可能返回48x48(若无匹配大图)
2. ‌高DPI屏幕适配
// 结合devicePixelRatio调整
qreal dpr = widget->devicePixelRatio();
QSize physicalSize = icon.actualSize(QSize(32, 32)) * dpr;
3. ‌状态相关尺寸获取
// 获取禁用状态下的实际尺寸
QSize disabledSize = icon.actualSize(QSize(50, 50), QIcon::Disabled);

四、注意事项

  1. scaled()的区别
    actualSize返回系统选择的实际尺寸,而scaled()强制缩放图像。
  2. 空图标处理
    若图标未加载有效图像,返回QSize(0, 0)
  3. 性能优化
    频繁调用时建议缓存结果,避免重复计算。

五、应用场景

  • 控件布局‌:在自定义绘制时精确计算图标占位空间。
  • 响应式设计‌:根据实际尺寸动态调整界面元素。
  • 主题兼容‌:适配不同系统主题下的图标尺寸差异。
http://www.dtcms.com/a/346350.html

相关文章:

  • 2025/8/22 xxl-job速通
  • 解决 微信开发者工具 :下载基础库版本 2.31.0 失败
  • RAG和微调是什么?两者的区别?什么场景使用RAG或微调?判断依据是什么?
  • LINUX网络编程--网络的发展与通信
  • AI赋能环保精准治理:AI水质监测溯源快、空气质量预测施策准,守护生态新效能
  • 关于 java+gradle的弹窗多选应用app
  • 【GPT入门】第54课 量化位数与存储大小的影响
  • Java 面试题训练助手 Web 版本
  • 网络通信——UDP协议。
  • Kubernetes 1.28 集群部署指南(基于 Containerd 容器运行时)
  • 笔记:二叉树构建方法
  • 从“配置化思维”到“前端效率革命”:xiangjsoncraft 如何用 JSON 简化页面开发?
  • 【源码】MES系统:从下达计划、执行反馈、异常预警到过程控制的一整套执行中枢。
  • FastTracker:实时准确的视觉跟踪
  • 一键部署openGauss6.0.2轻量版单节点
  • DPY-3010: connections to this database server version are not supported by p
  • LoRA内幕机制解析(53)
  • Design Compiler:层次模型(Block Abstraction)的简介
  • 什么是神鸟云?
  • 亚马逊老品怎么再次爆发流量?
  • 软件测试要怎么自学?
  • CVPR 2025 | 哈工大港大DeCLIP:解耦CLIP注意力实现开放词汇感知!
  • RK3588随笔:MIPI协议——D-PHY 物理层的自定义和校验
  • codeforces round 1043(div3) 补题
  • Finite State Machine(FSM) for the Development Mode
  • NVM-Windows 命令大全
  • YOLO --- YOLOv5模型以及项目详解
  • Tiger任务管理系统-13
  • MiniOB环境部署开发(使用Docker)
  • FPC设计技巧