Как настроить таблицу стилей в 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, связанное с моей проблемой, но в моем случае это не работает.

1 ответ

Решение

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

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

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

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

setStyleSheet(
    "ChatWindow{background:url(" +
        filePath +
    ") 0 0 0 0 stretch stretch;}"
);
Другие вопросы по тегам