Qt:使用样式表设置背景图像不适用于资源

Posted

技术标签:

【中文标题】Qt:使用样式表设置背景图像不适用于资源【英文标题】:Qt: Setting the background image using stylesheets doesn't work with resources 【发布时间】:2013-10-03 18:52:56 【问题描述】:

我是 Qt 新手,遇到了一些问题!使用 QtCreator,我创建了一个简单的窗口,我现在正在尝试设置其背景图像。

四处搜索让我相信我应该使用 QT 样式表,在尝试了一些示例之后,我设法通过以下方式获得了背景图像:

this->setStyleSheet(" background-image: url(C:/test.jpg)");

在主图像的构造函数中。但是这个 url 引用显然很糟糕,所以我尝试使用资源。我的二维码是这样的:

<RCC>
    <qresource prefix="/images">
        <file alias="background.jpg">image2.jpg</file>
    </qresource>
</RCC>

现在尝试用

设置样式表
this->setStyleSheet(" background-image: url(:/images/image2.jpg)");

this->setStyleSheet("background-image: url(:/background.jpg)");

或者两者的任何组合都行不通!

我发现的一件奇怪的事情是,当我转到设计器窗口并转到属性窗口并将主窗口的样式表设置为

 background-image: url(:/images/image2.jpg)

它实际上在设计器预览中显示背景图像!但是一旦我启动应用程序,背景图像就消失了!

谁能解释我为什么会遇到这些问题?谢谢!

【问题讨论】:

这可能是插件问题。您可以尝试将图像从.jpg 格式更改为.png 格式,看看是否有效。还有see this answer. 试试:/images/background.jpg 我都试过了,都没有工作:( 编辑:我没有安装任何插件! 试试 url(qrc:/images/background.png) @FrankOsterfeld 添加 qrc 没有帮助。然而,现在发生了一个奇怪的变化。现在,当我启动应用程序时,在设计器中设置样式表背景图像:url(:/images/image2.jpg) 可以工作,但不再显示在预览中。但是试图从这样的代码中添加它->setStyleSheet(" background-image: url(:/images/image2.jpg)");仍然不起作用,这是我最终想要做的 【参考方案1】:

我认为您需要做的就是在引号内添加一个分号。

this->setStyleSheet(" background-image: url(C:/test.jpg);");

【讨论】:

我认为您没有理解这个问题。他试图在样式表中使用来自 resources 的背景图片,而不是直接路径。【参考方案2】:

要在 qt 中使用图像,您必须将其添加到 .qrc 文件中。

【讨论】:

这似乎与接受的答案相矛盾。我猜 .qrc 会将图像作为资源嵌入到应用程序中?我假设您仍然可以读取外部文件? 我应该说最好的方法是在 qt 中使用图像是将其添加到 qrc 文件中,因为在接受的答案中,路径仅适用于该机器。

以上是关于Qt:使用样式表设置背景图像不适用于资源的主要内容,如果未能解决你的问题,请参考以下文章

通过外观为 UIBarButtonItem 设置背景图像不适用于其他 UIControlStates

如何为分组表部分设置不同的背景图像..?

QT之设计部件背景色

单选按钮样式

qt里如何给button添加背景图片

QT中 checkBox怎么设置样式表,使我选中时,背景图片改变