Is it possible to set selected item style (Qt style sheet) of the QComboBox drop-down list?
The solution is to
Here is how:
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;
}
Remark: I think, according to the Qt docs applying this style should also work...but it does not.
QComboBox QAbstractItemView::item {
border-bottom: 5px solid white; margin:3px;
}
QComboBox QAbstractItemView::item:selected {
border-bottom: 5px solid black; margin:3px;
}
If you mean you want the selected item to appear different when the combo box is showing its elements (i.e. in the "dropped down" state), you can change the colors for the Highlight and HighlightedText in the palette, or style the inner 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();
}
If you just mean the style of the element in its "collapsed" state, I'd take a look at the "Customizing QComboBox" section of the Qt Style Sheets reference for examples on what you are trying to do.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With