Фон должен быть установлен на 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();
}
Я подумал, что это может быть проблема с расположением изображения, поскольку изменение цвета фона виджета работает нормально, но папка изображений находится в каталоге build-debug, который, как мне кажется, является правильным местом. Я пробовал изменить путь к изображению, синтаксис и класс styleSheet, но ничего не помогло, есть предложения?
1 ответ
Из справочника по таблицам стилей Qt:
Он должен работать. Вероятно, файл изображения не находится там, где ожидает программа. Если вы используете Qt Creator, вы должны знать, что он создает целевой двоичный файл в отдельном каталоге (обычно с именем вроде build-yourprojectname-qtversion-Debug
или около того). Это называется теневой сборкой . Вам нужно будет скопировать изображения в нужное место относительно этого каталога теневой сборки, иначе программа не сможет найти файл.
Лучше всего встроить изображение в двоичный файл в качестве ресурса. Я просто попробовал это и, похоже, у меня работает:
В 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
...
Похожие вопросы
Новые вопросы
c++
C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который должен быть) скомпилирован с помощью компилятора C ++. Используйте тег для конкретной версии для вопросов, связанных с конкретной версией стандарта [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] или [C ++ 23] и т. Д. .
"QWidget {background-image: url('images/ricepaper.png')}"
Widget
? Возможно проблема в этом. Например, вы отменяетеpaintEvent()
?