CSS   发布时间:2022-04-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了css – 如何在Qt样式中平滑缩小背景图像的尺寸?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
默认情况下,Qt使用一种非常简单,快速和丑陋的缩放图像方式,Qt :: FastTransformation,可能是最近邻插值或类似的东西.

在处理QPixmap时,可以选择视觉上更好的缩放,例如,

pixmap = pixmap.scaledToHeight(height,Qt::SmoothTransformation);

但是,如果图像不在QPixmap对象中,而只是按钮的背景或其他小部件,我们可以做什么?

例如,以下是创建自动调整大小,完全自定义按钮的一种非常简单的方法,当与布局和setStretch()一起使用时,非常适合与分辨率无关的应用程序.

ui->pushButton->setStyleSheet(
    "QPushButton { border-image: url(:/img/button.png) 0 0 0 0 stretch stretch; }"
    "QPushButton:checked { border-image: url(:/img/button_checked.png) 0 0 0 0 stretch stretch; }"
    "QPushButton:pressed { border-image: url(:/img/button_pressed.png) 0 0 0 0 stretch stretch; }"
    "QPushButton:checked:pressed { border-image: url(:/img/button_checked_pressed.png) 0 0 0 0 stretch stretch; }"
    );

由于Qt样式表中的a deficiency,我使用了border-image而不是BACkground-image.

如何使用样式表中使用的图像进行更平滑的缩放?

使用pixmaps实现相同的功能更不优雅.我将不得不总是捕获调整大小事件,重新计算我所有小部件的新大小,并手动重新绘制它们.

编辑:

有趣的是,如果图像被放大,平滑缩放与样式表一起使用,而在缩小图像时则不适用.

在以下示例中,在第一行中,使用32 * 32图标,在第二行中,使用大于2000 * 2000的统一网格.

解决方法

在内部,Qt使用QPainter绘制样式,QPainter在绘制缩放的pixmaps时使用双线性插值.当缩小因子足够小时,从质量角度来看,这具有主要缺点,例如参见 this bug report.为获得最佳质量,背景源图像应始终在目标大小的[0.5,2.0]因子内. AFAICT没有简单的方法摆脱这种限制.

大佬总结

以上是大佬教程为你收集整理的css – 如何在Qt样式中平滑缩小背景图像的尺寸?全部内容,希望文章能够帮你解决css – 如何在Qt样式中平滑缩小背景图像的尺寸?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。