QComboBoxのドロップダウンリストの選択項目のスタイル(Qtスタイルシート)を設定することはできますか?
22442 次
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 に答える