我试图制作一些"复杂的" Qt按钮样式,使用QSS,但我面临一个我无法解决的问题。
我想做一个渐变的圆形边框,例如从左侧的蓝色到右侧的红色:
结果想要
所以,这是应用于QPushButton的样式表:
background:
white;
border-radius:
30px;
border-style:
solid;
border-width:
10px;
border-color:
qlineargradient(x1:0, y1:0, x2:1, y2:0, stop: 0 blue, stop: 1 red)
red
qlineargradient(x1:0, y1:0, x2:1, y2:0, stop: 0 blue, stop: 1 red)
blue;
这是结果。
非常难看,对吧?
答案 0 :(得分:2)
此问题已作为错误报告给Qt,没有迹象表明他们会修复它:https://bugreports.qt.io/browse/QTBUG-2221
我可以通过在paint.net(可以使用任何图像创建程序)上创建此精确边框的.png图像来解决此问题。我将背景设置为透明,并确保图像的边框是我想要在QPushButton上使用的边框。然后,我将.png文件设置为资源,并将其输入到QPushButton样式表中:
border: none;
border-image: url(:/icons/images/blue-red-gradient.png);
background-color: rgb(255, 255, 255);
border-radius: 15px;
您可以做的另一件事是继承QPushButton的子类并覆盖其paint事件。在此处绘制边框,并将所有QPushButtons升级到这个新类。不过,这将更加痛苦,因此我个人更喜欢第一个解决方案。
答案 1 :(得分:0)