Qt中如何修改scrollBar的setPage?

How to change the setPage of scrollBar in Qt?

我在 Qt 上使用 scrollAreaWidgetContents 创建了一个包含 64 个项目的列表,该列表如下所示:

我想当我按下向下滚动箭头时,我得到 4 个句子而不是 5 个。因此,只要单击向下或向上箭头,我就会跳过一个句子。

scrollArea的样式表代码:

QFrame{
    border:solid;
}

QScrollBar:vertical {
    width: 15px;
    margin: 30px 0 30px 0;
    border-style: solid;
}

QScrollBar::handle:vertical {
    min-height: 30px;
    border: solid ;    
}

QScrollBar::add-line:vertical {
    subcontrol-position: bottom;
    subcontrol-origin: margin;
    border: solid ;
    height: 30px;
}

QScrollBar::sub-line:vertical {
    subcontrol-position: up;
    subcontrol-origin: margin;
    border: solid ;
    height: 30px;
}

QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
    background: none;
}

QScrollBar::up-arrow:vertical
{
    image: url(icons/Freccia_Su.png);
}

QScrollBar::down-arrow:vertical
{
    image: url(icons/Freccia_Giu.png);
}

我在 QScrollBar 的文档中找到了 setPage 但我不明白如何添加它?有人可以帮我解决这个问题吗?

我想您可能对 QScrollArea 期望过高。我无法从你的问题中看出你是如何设置 QScrollArea 的内容的,但是如果你已经将 QTextEdit 设置为它的小部件,那么 QScrollArea 就不知道任何关于文本大小的信息,例如。 你最好看看 QListWidget:

//assuming a ui with a QListWidget called listWidget

    ui.setupUi(this);
    QStringList items;
    for (int i = 0; i < 100; i++)
      items << "item " + QString::number(i);
    ui.listWidget->insertItems(0, items);

每次单击滚动条,这将自动滚动一项。

您可以使用 QListWidgetItem 创建更复杂的列表条目(请参阅 QListWidget 的文档)。

项目本身可以包含小部件,因此您可以拥有带有单选按钮等的自定义小部件,并使用 QListWidget::setItemWidget() 在每个项目上进行设置。滚动将考虑小部件的大小。