QSS系列:自定義QMessageBox
阿新 • • 發佈:2020-12-21
技術標籤:QSS
QSS系列:自定義QMessageBox
簡述
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助手,如有錯誤,請指正,謝謝!