简述
QMessageBox的textLabel对象名为qt_msgbox_label
,iconLabel对象名为qt_msgboxex_icon_label
,buttonBox对象名为qt_msgbox_buttonbox
,通过对象名可以在样式表中有限的设置样式。
效果
代码
QMessageBox messagebox(this);
messagebox.setWindowIcon(QIcon(":/Resource/logo"));
messagebox.setWindowTitle("QMessageBox");
messagebox.setText("QMessageBox style sheet");
messagebox.setIconPixmap(QPixmap(":/Resource/border_image").scaled(40, 40));
messagebox.addButton("Okay", QMessageBox::AcceptRole);
messagebox.addButton("Cancel", QMessageBox::RejectRole);
QLabel *textlabel = messagebox.findChild<QLabel*>("qt_msgbox_label"); //获取textLabel
if (textlabel)
{
textlabel->setAlignment(Qt::AlignCenter); //设置textLabel文本居中
}
messagebox.exec();
样式表
QMessageBox {
background-color: #F2F2F2; /* QMessageBox背景颜色 */
}
QMessageBox QLabel#qt_msgbox_label { /* textLabel */
color: #298DFF;
background-color: transparent;
min-width: 240px; /* textLabel设置最小宽度可以相应的改变QMessageBox的最小宽度 */
min-height: 40px; /* textLabel和iconLabel高度保持一致 */
}
QMessageBox QLabel#qt_msgboxex_icon_label { /* iconLabel */
width: 40px;
height: 40px; /* textLabel和iconLabel高度保持一致 */
}
QMessageBox QPushButton { /* QMessageBox中的QPushButton样式 */
border: 1px solid #298DFF;
border-radius: 3px;
background-color: #F2F2F2;
color: #298DFF;
font-family: "Microsoft YaHei";
font-size: 10pt;
min-width: 70px;
min-height: 25px;
}
QMessageBox QPushButton:hover {
background-color: #298DFF;
color: #F2F2F2;
}
QMessageBox QPushButton:pressed {
background-color: #257FE6;
}
QMessageBox QDialogButtonBox#qt_msgbox_buttonbox { /* buttonBox */
button-layout: 0; /* 设置QPushButton布局好像没啥作用 */
}
参考
参考Qt助手,如有错误,请指正,谢谢!