在QToolButton中设置border-image时如何设置边框颜色?

时间:2013-05-16 00:29:27

标签: qt stylesheet qtstylesheets

我正在尝试创建一个带有调整大小的图像,背景颜色和边框的QToolButton。我已成功获取图像(使用边框图像)和背景颜色以正确显示。但是,我似乎无法显示边框,因为它看起来背景颜色是“覆盖”它。

我正在尝试使用Qt Creator 2.7.0和Qt 4.8.4中的样式表来做到这一点。

我的样式表是:

border-radius: 4px;
border: 2px solid red;
border-image: url(myImage) 0 0 0 0 stretch stretch;
border-repeat: no-repeat;
background-color: rgb(100, 255, 100);

我可以使用QLabel创建我想要的外观,将像素图设置为我的图像,然后在样式表中设置边框和背景颜色,但我需要这是一个可点击的按钮。知道我做错了吗?

2 个答案:

答案 0 :(得分:0)

使用background-image设置图片,因为您使用border-image它会覆盖您设置为border的样式

border-radius: 4px;
border: 2px solid red;
background-image: url(:/myImage.png);
background-color: rgb(100, 255, 100);

答案 1 :(得分:0)

事实证明解决方案非常简单,但我将首先介绍我首先尝试完成的两个案例。

在QToolButton上设置背景图像将图像放在按钮上的图像原始大小。也就是说,它不会缩放图像,也不会在调整按钮大小时调整大小。使用背景图像确实允许我设置我想要的边框,所以这是我认为我最初必须做的。

在QToolButton上设置边框图像会将按钮上的图像放置在缩放尺寸以适合按钮,并在调整按钮大小时重新缩放。不幸的是,这种方法会覆盖我试图设置的边框样式。

最终,解决方案是简单地使用图像,而不是背景图像或边框图像。这给了我想要的一切:用按钮和我想要的边框样式缩放的图像。

我的样式表现在是:

border-radius: 4px;
border: 2px solid red;
image: url(myImage) 2 2 2 2 stretch stretch;
background-repeat: no-repeat;
background-color: rgb(100, 255, 100);

编辑:使用just image的警告是,如果需要,它会缩小,但不会缩小。如果您的按钮大于图像,则图像将无法拉伸以适合您的按钮。幸运的是,我的图像比我的按钮大,所以它缩小了。请参阅:http://qt-project.org/doc/qt-4.8/stylesheet-reference.html#image-prop