【问题标题】:Unable to set the background image in Qt Stylesheet无法在 Qt 样式表中设置背景图像
【发布时间】:2011-05-26 09:13:53
【问题描述】:

我正在通过带有参数 -stylesheet 的命令行运行我的 Qt 应用程序。控件的样式有效,但在我尝试为 MainWindow 加载背景图像时无效。 我试过了:

QMainWindow{
background-image:url(:image_256_8bit_latest_back.png);
}

还尝试删除背景中的“:”,但没有任何区别。谁能告诉我这个样式表有什么问题?

【问题讨论】:

    标签: c++ qt user-interface stylesheet


    【解决方案1】:

    您尝试使用的图像在哪里?

    您是否将其作为应用程序的resource

    如果您想使用作为资源一部分的图像,您的项目中应该有一个资源文件 (*.qrc)。该文件应包含以下内容:

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

    然后,您可以在 QMainWindow 的构造函数中编写此代码:

    setStyleSheet("background-image: url(:/images/sunset.jpg);");
    

    如果您不想使用Qt resource system,您可以将映像的路径放在磁盘上:

    setStyleSheet("background-image: url(res/images/sunset.jpg);");
    

    如果您使用的是相对路径,请注意:Qt 将从当前位置开始,这可能会发生变化,特别是如果您使用 Qt Creator 进行开发。

    使用Qt Creator,当您在调试模式下运行应用时,当前路径位于debug/。当您在发布模式下运行应用时,当前路径位于release/(除非您更改了设置)。

    【讨论】:

    • 感谢您的信息:)。但是我想要一个单独的 QSS 文件的原因是因为我希望用户能够通过简单地加载他们自己的 QSS 文件来自定义应用程序。这样当在命令提示符下运行时,它可以轻松应用 QSS 文件中的所有样式,而无需接触代码...
    • 这意味着图像在磁盘上的某个位置。但是通过以: 开头的路径告诉Qt 图像是一种资源。您是否尝试将绝对图像路径放入样式表中?
    • 我尝试创建一个名为stylesheet.qss 的文件,该文件位于我的应用文件夹中,其中包含如下内容:QMainWindow { background-image : url(sunset.jpg); }。我使用参数-stylesheet=stylesheet.qss 运行应用程序,我的应用程序的背景是日落图片。我不明白为什么这对你不起作用。
    【解决方案2】:

    很明显,您的图片路径存在问题。尝试使用绝对路径来验证图像是否由 QT 加载并正常工作。

    【讨论】:

    • 路径没有问题,因为它可以作为按钮的图像...... :)
    猜你喜欢
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多