1.怎样对QMessageBox 进行 背景设置?
2.背景设置成功后,又如何设置QMessageBox 上面文字的颜色和按钮的背景色?
3.如何设置文字的背景色?
==================================================================================
对于问题1:我们可以用setStyleSheet()实现
QMessageBox *msgBox = new QMessageBox();
QPixmap iconImg("UI/Image/warning.jpg");
QIcon icon(iconImg);
msgBox->setWindowIcon(icon);
msgBox->setCaption(sCaption);
msgBox->setText(sText);
QPushButton *btn_sure = msgBox->addButton("确定", QMessageBox::AcceptRole);
QPushButton *bun_cancel = msgBox->addButton("取消", QMessageBox::RejectRole);
msgBox->setStyleSheet("background-color:white“);
如下图:
如果我们设置的背景色是纯色,到这边即可,不会有什么问题。。。
===================================================================================
对于第2个问题:网上有提到,这里我就不多说了,这里直接复制过来,但是没有试过运行效果。
对于字的属性,我们可以使用html格式的字符串
QMessageBox::information(this, tr("Msg"), tr("<h1><i>Hello</i> <font color=red size=500>Qt!</font></h1>"));
对于按钮的属性:
QMessageBox msgBox;
msgBox.setText("Hello, Qt!");
msgBox.setStyleSheet("QPushButton { background-color: rgb(255, 85, 0); color: rgb(85, 255, 0); }");
msgBox.exec();
===================================================================================
对于第3个问题是我想说的:为什么字还有背景色?!
那好我们把背景色设置为渐变色,就可以看出问题了:
msgBox->setStyleSheet("background-color: qlineargradient(x1: 0, y1: 1, x2: 0, y2: 0,stop: 0 rgba(255, 255, 255, 100%),stop: 1 rgba(10, 144, 255, 100%));");
效果如下:
所以我们要想办法设置字的背景色和按钮的背景色,因此我们要想办法取出QMessageBox 的孩子属性,把背景设置为透明即可
QObjectList objChildList = msgBox->children();
for (int i = 0; i < objChildList.size(); i++)
{
QObject *pObj= objChildList.at(i);
if (pObj->inherits("QWidget"))
{
QWidget *pWidget = (QWidget*)pObj;
pWidget->setStyleSheet("background-color: transparent");
}
}
运行效果如下: