如何更改QComboBox的QScrollBar的大小?

时间:2014-09-25 20:07:52

标签: c++ qt qcombobox

我正在使用带有一些项目的QComboBox,当显示QComboBox中显示所有可用项目的小部件时,只有部分项目可见,而其他项目可通过QScrollBar访问。

问题是QScrollBar要瘦,我想让它更大。我在网上做了一些研究,我确实找到了一些方法来改变QScrollBar的宽度(参见下面的参考资料),但问题是我根本找不到访问QComboBox的方法' s QScrollBar。

所以,考虑到这个问题,我该怎么做这个改变? (我想你可能会向我提出一种不要求我访问QScrollBar的方式,或者告诉我如何访问它)。

参考文献:

2 个答案:

答案 0 :(得分:2)

滚动条不是QComboBox类的成员,它是底层QAbstractItemView的成员。尝试类似以下内容(伪代码):

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);

scrollbarwidgets返回该对齐的滚动条的小部件列表。然后,您可以在滚动条指针上设置属性。

答案 1 :(得分:2)

  1. 通过view()

  2. 获取组合框QAbstractItemView
  3. 该类继承自QAbstractScrollArea,因此继承了verticalScrollBar method

  4. e.g。

    QAbstractItemView *qv = combobox.view();
    QScrollBar *scrollbar = qv->verticalScrollBar();
    // Adjust size via setStyleSheet or hint/width