如何在QT中设置样式表以选择假发背景的随机图像

How to set up stylesheet in QT to choose random image for wiget background?

本文关键字:假发 选择 背景 图像 随机 QT 样式 设置      更新时间:2023-10-16

因此,我正在尝试从PC的文件系统中选择随机图像,并将其在假冒中进行背景。这就是为什么我打开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 Stylesheet中设置与我的问题有关的背景图像,但是就我而言,它行不通。

根据文档,没有这样的属性称为 border-image:您要搜索的是 background-image

此外,由于您还指定其他背景的参数,因此应使用background

此外,由于您的文件在磁盘上而不是在资源上,因此URL不应以:开头:键入url(" + filePath + ")而不是url(:" + filePath + ")

校正的语法:

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