当前位置:  开发笔记 > 编程语言 > 正文

如何在Qt样式中平滑缩小背景图像的尺寸?

如何解决《如何在Qt样式中平滑缩小背景图像的尺寸?》经验,为你挑选了0个好方法。

默认情况下,Qt使用一种非常简单,快速和丑陋的缩放图像方式Qt::FastTransformation,可能是最近邻插值或类似的东西.

在处理a时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; }"
    );

我使用border-image而不是background-image由于Qt样式表的缺陷.

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

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

编辑:

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

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

例

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有