Поэтому я пытаюсь выбрать случайное изображение из файловой системы моего компьютера и сделать его фоном в wiget. Вот почему я открываю QFileDialog и использую его. qDebug дает мне правильный путь к изображению, но все равно он не работает.
void ChatWindow::on_actionImage_triggered()
{
QString fileName = QFileDialog::getOpenFileName(
this, tr("Open file"), "/home", tr("Images(*.jpg)")
);
QString filePath(fileName);
qDebug () << filePath;
setStyleSheet(
"ChatWindow{border-image:url(:" +
filePath +
") 0 0 0 0 stretch stretch;}");
QGraphicsOpacityEffect * effect1 =
new QGraphicsOpacityEffect(ui->messageHistory);
effect1->setOpacity(0.8);
ui->messageHistory->setGraphicsEffect(effect1);
ui->messageHistory->setStyleSheet("background-color: white;");
QGraphicsOpacityEffect * effect2 =
new QGraphicsOpacityEffect(ui->roomTree);
effect2->setOpacity(0.8);
ui->roomTree->setGraphicsEffect(effect2);
ui->roomTree->setStyleSheet("background-color: white;");
QGraphicsOpacityEffect * effect3 =
new QGraphicsOpacityEffect(ui->messageInput);
effect3->setOpacity(0.8);
ui->messageInput->setGraphicsEffect(effect3);
ui->sendButton->setStyleSheet("background-color: none;");
}
Я видел это Невозможно установить фоновое изображение в таблице стилей Qt связано с моей проблемой, но в моем случае это не работает.
Согласно документация, нет такого свойства под названием border-image
: что вы ищете background-image
,
Кроме того, так как вы также указываете другие параметры фона, вы должны использовать background
,
Более того, поскольку ваш файл находится на диске, а не в ресурсах, URL не должен начинаться с :
: тип url(" + filePath + ")
вместо url(:" + filePath + ")
,
Исправленный синтаксис:
setStyleSheet(
"ChatWindow{background:url(" +
filePath +
") 0 0 0 0 stretch stretch;}");
Других решений пока нет …