1

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

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

我的样式表是:

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 创建我想要的外观,将像素图设置为我的图像,然后在我的样式表中设置边框和背景颜色,但我需要这是一个可点击的按钮。知道我做错了什么吗?

4

2 回答 2

1

所以事实证明解决方案非常简单,但为了完整起见,我将介绍我首先尝试的两种情况。

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

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

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

我的样式表现在是:

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

于 2013-05-16T15:46:21.150 回答
0

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

border-radius: 4px;
border: 2px solid red;
background-image: url(:/myImage.png);
background-color: rgb(100, 255, 100);
于 2013-05-16T09:59:01.020 回答