2014-09-25 176 views
2

我在QComboBox中使用了一些项目,当显示QComboBox中所有可用项目的窗口小部件出现时,只有其中一些项目可见,而另一个则通过QScrollBar访问。如何更改QComboBox的QScrollBar的大小?

问题是QScrollBar很薄,我想把它做得更大。我在网上做了一些研究,并且发现了一些改变QScrollBar宽度的方法(参见下面的参考资料),但问题是我根本无法找到访问QComboBox的QScrollBar的方法。

那么,鉴于这个问题,我该如何做这个改变? (我猜你可能会以一种不需要我访问QScrollBar的方式呈现给我,或者展示我如何访问它)。

参考文献:

+0

只是想法:尝试设置模型与数据到你的盒子,创建listView,尝试定制它和setView组合。 – Chernobyl 2014-09-25 20:12:02

回答

2
  1. 获取组合框经由view()

  2. 即类从QAbstractScrollArea继承的QAbstractItemView,从而继承了verticalScrollBar method

例如

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

感谢您的回复。虽然它在编译到桌面时起作用,但它不适用于我的Ebedded Linux Qt编译= T我将在Stack Overflow中创建一个特定的线程来处理此问题,因为与Desktop的编译运行良好,因此您的解决方案可以工作。 – Momergil 2014-09-30 14:17:13

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返回该对齐的滚动条的窗口小部件列表。然后可以在滚动条指针上设置属性。