如何在QT中设置样式表来为wiget背景选择随机图像?
How to set up stylesheet in QT to choose random image for wiget background?
所以我试图从我电脑的文件系统中选择随机图像,并将其作为 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;");
}
我已经看到这个 Unable to set the background image in Qt Stylesheet 与我的问题相关,但在我的情况下它不起作用。
根据 documentation,不存在名为 border-image
的 属性:您要搜索的是 background-image
。
此外,由于您还指定了其他背景参数,因此您应该使用background
。
此外,由于您的文件在磁盘上而不在资源中,因此 url 不应以 :
开头:键入 url(" + filePath + ")
而不是 url(:" + filePath + ")
。
更正后的语法:
setStyleSheet(
"ChatWindow{background:url(" +
filePath +
") 0 0 0 0 stretch stretch;}"
);
所以我试图从我电脑的文件系统中选择随机图像,并将其作为 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;");
}
我已经看到这个 Unable to set the background image in Qt Stylesheet 与我的问题相关,但在我的情况下它不起作用。
根据 documentation,不存在名为 border-image
的 属性:您要搜索的是 background-image
。
此外,由于您还指定了其他背景参数,因此您应该使用background
。
此外,由于您的文件在磁盘上而不在资源中,因此 url 不应以 :
开头:键入 url(" + filePath + ")
而不是 url(:" + filePath + ")
。
更正后的语法:
setStyleSheet(
"ChatWindow{background:url(" +
filePath +
") 0 0 0 0 stretch stretch;}"
);