2. 为什么QLineEdit的图标大小、间距改不了

目录

【问题】

 【源码分析】

源码文件名:

源码路径:

关键代码:

【源码解读】

【解决方案】


【问题】

在业务开发场景中发现,通过qss属性"icon"无法更改QLineEdit中图标按钮的大小、间距等式样。

此外,QLineEdit控件类也没有提供任何设置图标按钮大小、间距的接口!

示意图如下:

 【源码分析】

源码文件名:

        qlineedit_p.cpp

源码路径:

        Src\qtbase\src\widgets\widgets

关键代码:

QLineEditPrivate::SideWidgetParameters QLineEditPrivate::sideWidgetParameters() const
{
    Q_Q(const QLineEdit);
    SideWidgetParameters result;
    result.iconSize = q->style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, q);
    result.margin = result.iconSize / 4;
    result.widgetWidth = result.iconSize + 6;
    result.widgetHeight = result.iconSize + 2;
    return result;

}

【源码解读】

根据以上QLineEditPrivate::sideWidgetParameters()函数内容, 我们可以得出以下结论:

  • QLineEdit的图标按钮由风格类型:QStyle::PM_SmallIconSize的尺寸信息决定!
  • QLineEdit的图标按钮宽高分别为:iconSize + 6, iconSize+2; margin尺寸为:iconSize /4。

【解决方案】

  1. 通过继承 QCommonStyle类,重写虚接口pixelMetric,来改变PM_SmallIconSize的尺寸值
  2. 借助UI, 修改原图标资源文件,增加一些边缘透明像素,来实现图标按钮的margin间距效果

  • 24
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峭桑岱司

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值