【问题标题】:How can I set a border color when I set border-image in a QToolButton?在 QToolButton 中设置边框图像时如何设置边框颜色?
【发布时间】:2013-05-16 00:29:26
【问题描述】:

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

【问题讨论】:

    标签: qt stylesheet qtstylesheets


    【解决方案1】:

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

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

    在 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

    【讨论】:

    • 它也适用于 Qt 5。谢谢! (测试于:Ubuntu、Qt Creator 4.5.2、Qt 5.9.5、GCC 7.3.0、64 位)
    【解决方案2】:

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

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

    【讨论】:

    • 背景图像在 QToolButton 上不可缩放。如果图像太大,就会超出按钮的范围。如果它太小,图像不会被拉伸到按钮的大小。我认为正在适当地使用边框图像,我只是无法让边框工作。我正在复制一个旧版本的 UI,它的按钮为 QToolButton,但使用调色板设置所有内容,它似乎可以正常工作,但我想升级到使用样式表。
    猜你喜欢
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2013-06-03
    • 1970-01-01
    相关资源
    最近更新 更多