【问题标题】:How to change the size of a QComboBox's QScrollBar?如何更改 QComboBox 的 QScrollBar 的大小?
【发布时间】:2023-04-07 02:55:01
【问题描述】:

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

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

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

参考资料:

【问题讨论】:

  • 只是想法:尝试将带有数据的模型设置到您的盒子,创建 listView,尝试自定义它并将 setView 设置为组合。

标签: c++ qt qcombobox


【解决方案1】:
  1. 通过view()获取组合框的QAbstractItemView

  2. 该类继承自QAbstractScrollArea,因此继承了verticalScrollBar method

例如

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

【讨论】:

  • 感谢您的回复。虽然它在编译到 Desktop 时有效,但它不适用于我的 Ebedded Linux Qt 编译 =T 我将在 Stack Overflow 中创建一个特定线程来处理这个问题,因为使用 Desktop 进行编译运行良好,因此,您的解决方案有效.
【解决方案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);

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

【讨论】:

    猜你喜欢
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 2019-09-03
    • 1970-01-01
    • 2022-01-21
    • 2012-05-03
    • 2019-03-18
    相关资源
    最近更新 更多