QMessageBox 背景设置

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");
}
}

运行效果如下:


哈哈哈,大功告成。。。。


END


  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值