2013-05-16 585 views
1

我想创建一个调整大小的图像,背景颜色和边框的QToolButton。我已成功获取图像(使用边框图像)和背景颜色以正确显示。但是,我似乎无法获得边框显示,因为它看起来背景色是“覆盖”它的。当我在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,设定像素映射到我的图像,然后设置在我的样式表的边框和背景颜色的外观,但我需要这成为一个可点击的按钮。任何想法我做错了什么?

回答

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); 

编辑:告诫只使用图像,如果有必要会缩小,但是不起来。如果您的按钮大于您的图片,则图片不会伸展以适合您的按钮。幸运的是,我的图片比我的按钮大,所以缩小了比例。请参阅:http://qt-project.org/doc/qt-4.8/stylesheet-reference.html#image-prop

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

背景图片在QToolButton上不可缩放。如果图像太大,则超出按钮的范围。如果太小,则图像不会被拉伸到按钮的大小。我认为我恰当地使用了边框图像,但我无法使边框工作。我正在复制一个老版本的UI,它具有QToolButton按钮,但使用调色板来设置所有内容,并且它似乎正常工作,但我想升级到使用样式表。 – Chris