QMessageBox 背景设置

来源:互联网 发布:淘宝一元拍在哪里 编辑:程序博客网 时间:2024/06/06 02:17

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

运行效果如下:

 

示例:

QMessageBox msgBox;
 QPixmap iconImg(ICO_MAIN);
 QIcon icon(iconImg);
 msgBox.setWindowFlags(Qt::FramelessWindowHint);
 msgBox.setWindowIcon(icon);
 msgBox.setIcon(QMessageBox::Information);
 msgBox.setWindowTitle(MSGBOX_TITLE);
 QString tmp = "<font color=white>";
 tmp += _Content;
 tmp += "</font>";
 msgBox.setText(tmp);
 QPushButton *btn_sure = msgBox.addButton("确定", QMessageBox::AcceptRole);
 btn_sure->setFlat(true);
 btn_sure->setStyleSheet("QPushButton{color: rgb(255, 255, 255);}");
 msgBox.setDefaultButton(btn_sure);
 msgBox.setStyleSheet("background-color:qlineargradient(x1:0, y1:1, x2:0, y2:0,stop:0 rgba(255, 255, 255, 100%),stop: 1 rgba(111, 111, 111, 100%));");
 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");
  }
 }
 msgBox.exec();


END

原创粉丝点击