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:使用样式表设置背景图像不适用于资源的主要内容,如果未能解决你的问题,请参考以下文章