Qt 使用QPalette设置Qpushbutton背景色的问题

编程发现,无法通过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);
}

读者若有不同见解,欢迎交流。

你可能感兴趣的:(QT学习之路)