2

I'm using a QComboBox with some items to the point that, when the widget that shows all available items in the QComboBox appears, only some of the items are visible with the other accesible through a QScrollBar.

The problem is that the QScrollBar is to thin and I want to make it larger. I did some research on the web and I did found some ways to change the QScrollBar's width (see references below), but the problem is that I simply can't find the method to access the QComboBox's QScrollBar.

So, given this problem, how can I do this change? (I guess you may either present me with a way that don't require me to access the QScrollBar or show how may I access it).

References:

Community
  • 1
  • 1
Momergil
  • 2,213
  • 5
  • 29
  • 59
  • Just idea: try to set model with data to your box, create listView, try to customize it and setView to combo. – Jablonski Sep 25 '14 at 20:12

2 Answers2

3
  1. Get the combobox's QAbstractItemView via view()

  2. That class inherits from QAbstractScrollArea, thus inherits the verticalScrollBar method

e.g.

QAbstractItemView *qv = combobox.view();
QScrollBar *scrollbar = qv->verticalScrollBar();
// Adjust size via setStyleSheet or hint/width
Marco A.
  • 43,032
  • 26
  • 132
  • 246
  • Thanks for the reply. Although it worked when compiling to Desktop, it didn't work for my Ebedded Linux Qt compilation =T I'll create a specific thread in Stack Overflow to deal with this issue, since compilation with Desktop worked well and, therefore, your solution works. – Momergil Sep 30 '14 at 14:17
2

The scroll bar isn't a member of the QComboBox class, it's a member of the underlying QAbstractItemView. Try something like the following (pseudo-code):

QListView* abby = new QListView();
QWidgetList list = abby->scrollBarWidgets(Qt::AlignRight);
for (auto itr = list.begin(); itr != list.end(); itr++)
{
    (*itr)->setMinimumWidth(100);
}
QComboBox combo;
combo.setView(abby);

The scrollbarwidgets returns a widget list of the scroll bars for that alignment. You can then set the properties on the scroll bar pointers.

Nicolas Holthaus
  • 7,763
  • 4
  • 42
  • 97