编程发现,无法通过QPalette实现对界面所有按钮的颜色的动态设置。
只能通过setStyleSheet实现特定颜色的设置。
代码如下:
void Palette::ShowButton()
{
QStringList colorList = QColor::colorNames();
QColor color = QColor(colorList[buttonComboBox->currentIndex()]);
QPalette p = contentFrame->palette();
p.setColor(QPalette::Button, color);
contentFrame->setPalette(p);
contentFrame->update();
//OkBtn->setStyleSheet("background-color:rgb(50, 250, 60)");
}
对于窗口颜色设置,也必须指明this指针,否则也无法实现颜色设置。
void Palette::ShowWindow()
{
QStringList colorList = QColor::colorNames();
QColor color = QColor(colorList[windowComboBox->currentIndex()]);
QPalette p = this->palette();
p.setColor(QPalette::Window,color);
this->setPalette(p);
this->update();
//qDebug() << "showWindow";
}
但是实验发现,可以实现对按钮文本、窗口文本的动态颜色设置。
void Palette::ShowWindowText()
{
QStringList colorList = QColor::colorNames();
QColor color = colorList[windowTextComboBox->currentIndex()];
QPalette p = contentFrame->palette();
p.setColor(QPalette::WindowText,color);
contentFrame->setPalette(p);
}
void Palette::ShowButtonText()
{
QStringList colorList = QColor::colorNames();
QColor color = QColor(colorList[buttonTextComboBox->currentIndex()]);
QPalette p = contentFrame->palette();
p.setColor(QPalette::ButtonText,color);
contentFrame->setPalette(p);
}
读者若有不同见解,欢迎交流。