Как настроить таблицу стилей в QT, чтобы выбрать случайное изображение для фона wiget?

Поэтому я пытаюсь выбрать случайное изображение из файловой системы моего компьютера и сделать его фоном в 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 связано с моей проблемой, но в моем случае это не работает.

0

Решение

Согласно документация, нет такого свойства под названием border-image: что вы ищете background-image,

Кроме того, так как вы также указываете другие параметры фона, вы должны использовать background,

Более того, поскольку ваш файл находится на диске, а не в ресурсах, URL не должен начинаться с :: тип url(" + filePath + ") вместо url(:" + filePath + "),

Исправленный синтаксис:

setStyleSheet(
"ChatWindow{background:url(" +
filePath +
") 0 0 0 0 stretch stretch;}");
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]