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);
}

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值