色に関連するコンテンツを選択するコンボ ボックスを作成したいと思います。コンテンツの背景に色を表示したい。私はこれを達成しました:
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 + "; }");
結果:選択されていないときは色がきれいに変わりましたが、ハイライトとヘッダーが灰色で読みにくいので、それも変更できればいいのにと思います。カーソルを合わせると、コンボ全体の色が最後に設定した色に変わります。
答えはスタイルシートにあるかもしれません-ヘッダーに適用されるプロパティを理解できれば。