Qt Qpaletteを使用してQpushbutton背景色を設定する問題

1630 ワード

プログラミングにより,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);
}

読者に異なる見解があれば、交流を歓迎します.