9

QComboBoxのドロップダウンリストの選択項目のスタイル(Qtスタイルシート)を設定することはできますか?

4

3 に答える 3

11

解決策は

  • ListView オブジェクトを作成する
  • スタイルシートを設定する
  • ComboBox のビューとして使用します

方法は次のとおりです。

    int main(int argc, char *argv[])
    {
    QApplication app(argc, argv);
    QMainWindow * mainWindow = new QMainWindow();
    QComboBox * combo = new QComboBox(mainWindow);
    QListView * listView = new QListView(combo);
    combo->addItem("foo");
    combo->addItem("bar");
    combo->addItem("foobar");
    combo->addItem("fooooo");

    listView->setStyleSheet("QListView::item {                              \
                             border-bottom: 5px solid white; margin:3px; }  \
                             QListView::item:selected {                     \
                             border-bottom: 5px solid black; margin:3px;    \
                             color: black;                                  \
                            }                                               \
                            ");
    combo->setView(listView);


    mainWindow->show();
    app.exec();

    return 0;
    }

備考: Qt のドキュメントによれば、このスタイルを適用してもうまくいくはずですが、そうではありません。

QComboBox QAbstractItemView::item {
    border-bottom: 5px solid white; margin:3px;
}
QComboBox QAbstractItemView::item:selected {
    border-bottom: 5px solid black; margin:3px;
}
于 2011-12-08T15:06:22.420 に答える
2

コンボ ボックスに要素が表示されているとき (つまり、「ドロップ ダウン」状態) に選択したアイテムを別のものに見せたい場合は、パレットの Highlight と HighlightedText の色を変更するか、内側のスタイルを設定します。QAbstractItemView

#include <QtGui>

int main(int argc, char **argv) {
  QApplication app(argc, argv);

  QComboBox cb;
  cb.addItem("Item 1");
  cb.addItem("Item 2");
  cb.addItem("Item 3");
  cb.show();

  QPalette p = cb.palette();
  p.setColor(QPalette::HighlightedText, QColor(Qt::red));
  p.setColor(QPalette::Highlight, QColor(Qt::green));
  cb.setPalette(p);

  // OR ...
  // cb.setStyleSheet("QComboBox QAbstractItemView { "
  //                  "selection-background-color: green; "
  //                  "selection-color: red; }");

  return app.exec();
}

「折りたたまれた」状態の要素のスタイルを意味するだけの場合は、Qt スタイル シート リファレンスの「 QComboBox のカスタマイズ」セクションを参照して、何をしようとしているのかの例を確認してください。

于 2011-12-07T14:51:18.070 に答える