Momergil
Momergil

Reputation: 2281

How to change the size of a QComboBox's QScrollBar?

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:

Upvotes: 2

Views: 4053

Answers (2)

Nicolas Holthaus
Nicolas Holthaus

Reputation: 8313

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.

Upvotes: 2

Marco A.
Marco A.

Reputation: 43662

  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

Upvotes: 3

Related Questions