QDialog dialog(this);
QPalette palette;
palette.setColor(QPalette::Background,QColor(255,255,255));
dialog.setAutoFillBackground(true);
dialog.setPalette(palette);
dialog.setWindowFlags(Qt::Dialog|Qt::WindowCloseButtonHint);
QFormLayout form(&dialog);
form.setSizeConstraint(QLayout::SetFixedSize);
QColorDialog colorDlg(QColor("#" + style_item_select_color),this);
colorDlg.setOptions(QColorDialog::NoButtons);
form.addRow(&colorDlg);
dialog.setWindowTitle(tr("选择项选中颜色"));
dialog.setStyleSheet(QString("QPushButton{color: #FFFFFF;padding:6px 10px 6px 10px;border-radius:6px;font-weight:bold;background: #%1;}"
"QPushButton:hover{background: #%2;}"
"QPushButton:pressed{background: #%3;}"
"QLineEdit{border-radius: 6px;border: 1px solid #%1;padding:3px 0px 3px 6px;color: #000000;selection-background-color:#%1;}"
"QSpinBox{border-radius: 6px;border: 1px solid #%1;padding:3px 0px 3px 6px;color: #000000;selection-background-color:#%1;}"
"QSpinBox::up-button{border: none;}"
"QSpinBox::down-button{border: none;}").arg(style_main_color).arg(style_hover_color).arg(style_press_color));
QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this);
QPushButton * btn = buttonBox.button(QDialogButtonBox::Ok);
btn->setCursor(Qt::PointingHandCursor);
btn->setStyleSheet(QString("QPushButton{color: #FFFFFF;padding:6px 10px 6px 10px;border-radius:6px;font-weight:bold;background: #%1;}"
"QPushButton:hover{background: #%2;}"
"QPushButton:pressed{background: #%3;}"
"QPushButton:disabled{background: #d8d8d8;}").arg(style_main_color).arg(style_hover_color).arg(style_press_color));
btn->setText(tr("OK"));
btn = buttonBox.button(QDialogButtonBox::Cancel);
btn->setCursor(Qt::PointingHandCursor);
btn->setStyleSheet("QPushButton{color:#FFFFFF;padding:6px 10px 6px 10px;background-color:#999999;font-weight:bold;border:0px;border-radius:6px;}"
"QPushButton:hover{background-color:#BBBBBB;}"
"QPushButton:pressed{background-color:#d5d5d5;}");
btn->setText(tr("Cancel"));
form.addRow(&buttonBox);
connect(&buttonBox, &QDialogButtonBox::accepted, &dialog, &QDialog::accept);
connect(&buttonBox, &QDialogButtonBox::rejected, &dialog, &QDialog::reject);
QList<QAbstractButton * > list = colorDlg.findChildren<QAbstractButton *>();
for (int var = 0; var < list.size(); ++var)
{
list[var]->setCursor(Qt::PointingHandCursor);
}
if(dialog.exec() == QDialog::Accepted)
{
QColor c = colorDlg.currentColor();
if(c.isValid())
{
QString mRgbStr = QString::number(qRgb(c.red(),c.green(),c.blue()),16).right(6);//ARGB 第一个是透明度
ui->label->setStyleSheet(QString("border-radius:6px;background:#%1;").arg(mRgbStr));
}
}
配合:Qt样式表:切换主题食用更佳。
效果如下,这是粉红色主题: