0

色に関連するコンテンツを選択するコンボ ボックスを作成したいと思います。コンテンツの背景に色を表示したい。私はこれを達成しました:

QList<QString> names;
QList<QColor> bgColors;
QList<QColor> fgColors;
QComboBox* colorComboBox = new QComboBox();
for(int i = 0; i < names.size(); ++i)
{
    colorComboBox->addItem(names.at(i), bgColors.at(i));
    const QModelIndex idx = colorComboBox->model()->index(i, 0);
    colorComboBox->model()->setData(idx, bgColors.at(i), Qt::BackgroundColorRole);
    colorComboBox->model()->setData(idx, fgColors.at(i), Qt::ForegroundRole);
}

コンボ ボックスには、必要な背景色と共に必要なテキストが表示されます (テキストの横に小さな四角形しか表示されない ColorEditorFactory の例ほど繊細ではありませんが、これは私が望んでいた方法です)。

必要なもの:

行/色が選択されたら、コンボ ボックスに色を表示したいと思います。現状では、コンボ ボックスを閉じるとテキストは表示されますが、色は表示されません。

ここに画像の説明を入力

コンボ ボックスのヘッダーの色を変更するにはどうすればよいですか? (私はそれをヘッダーと呼んでいますが、別の名前を持っている可能性があります。確かではありません-選択に使用されるテーブルの上に表示され、コンボボックスが閉じられたときに表示される部分)

編集: のスロットにスタイルシートを設定しようとしましたcurrentIndexChanged:

setStyleSheet("QComboBox { color: " + fgColor +
             "; background-color: " + bgColor + "; }");

結果: コンボ ボックス全体がその色に変更され、最初の色が忘れられました。

setStyleSheet("QComboBox:!on { color: " + fgColor +
             "; background-color: " + bgColor + "; }");

結果:選択されていないときは色がきれいに変わりましたが、ハイライトとヘッダーが灰色で読みにくいので、それも変更できればいいのにと思います。カーソルを合わせると、コンボ全体の色が最後に設定した色に変わります。

ここに画像の説明を入力

答えはスタイルシートにあるかもしれません-ヘッダーに適用されるプロパティを理解できれば。

4

1 に答える 1