这应该将背景设置为cats.jpg,但它没有做任何事情:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.setStyleSheet("background-image: url(images/ricepaper.png);");;
w.show();
return a.exec();
}
我认为这可能是图像位置的问题,因为更改窗口小部件的背景颜色工作正常,但images文件夹位于build-debug目录中,我相信它是正确的位置。我已经尝试过更改图像路径,语法和styleSheet类,没有任何工作,有什么建议吗?
答案 0 :(得分:2)
它应该工作。可能在程序所需的位置找不到图像文件。如果你正在使用Qt Creator,你应该知道它在一个单独的目录中构建目标二进制文件(通常使用类似build-yourprojectname-qtversion-Debug
的名称)。这叫做 shadow build 。
您需要将图像复制到相对于该阴影构建目录的适当位置,否则程序将无法找到该文件。
最好的办法是将图像作为资源嵌入二进制文件中。 我刚试过这个,似乎对我有用:
在main.cpp
:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget *w = new QWidget;
w->setStyleSheet("background-image: url(:/resources/pixmaps/close.png);");
w->show();
return app.exec();
}
请注意:/
中的url(:/resources/pixmaps/close.png)
部分。这是嵌入式资源所必需的。
在resources.qrc
:
<RCC>
<qresource prefix="/">
<file>resources/pixmaps/close.png</file>
... other resource files go here
</qresource>
在testproject.pro
:
RESOURCES += \
resources.qrc
当然,您需要将图像放在项目目录中的适当位置,以便资源编译器可以找到它。 在我的例子中,
resources/
├── pixmaps
│ ├── application.png
│ ├── cancel.png
│ ├── close.png <--Here
...