本文主要是介绍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。
【解决方案】
- 通过继承 QCommonStyle类,重写虚接口pixelMetric,来改变PM_SmallIconSize的尺寸值
- 借助UI, 修改原图标资源文件,增加一些边缘透明像素,来实现图标按钮的margin间距效果
这篇关于2. 为什么QLineEdit的图标大小、间距改不了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!