Как изменить setPage полосы прокрутки в Qt?

Я создаю список из 64 элементов, используя scrollAreaWidgetContents в Qt. Список выглядит следующим образом: введите здесь описание изображения

Я хочу, когда я нажимаю стрелку прокрутки вниз, я получаю 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);
}

Я нашел setPage в документации QScrollBar, но не понимаю, как его добавить? Может ли кто-нибудь помочь мне решить эту проблему?


person para club101    schedule 07.09.2016    source источник
comment
Я думаю, вам нужно более конкретно указать свой вопрос, а также указать, в какой среде вы работаете. Например, есть ли у вас доступ к исходному коду приложения или вы можете только редактировать таблицы стилей? Если вы можете отредактировать исходный код приложения, похоже, вы ищете setSingleStep(int), который контролирует, сколько строк прокручивается с помощью стрелок вверх/вниз.   -  person mike    schedule 07.09.2016
comment
Я использую Ubuntu 14.04LTS, и у меня есть доступ к приложению.   -  person para club101    schedule 07.09.2016
comment
хорошо - не могли бы вы немного яснее рассказать о том, чего вы пытаетесь достичь? Вы хотите контролировать количество строк, отображаемых на полосе прокрутки, или насколько она перемещается, когда вы нажимаете стрелки вверх/вниз?   -  person mike    schedule 07.09.2016
comment
когда я нажимаю, я хочу переместить следующую строку.   -  person para club101    schedule 07.09.2016
comment
Можете ли вы показать код, в котором вы устанавливаете содержимое области прокрутки?   -  person mike    schedule 07.09.2016


Ответы (1)


Я думаю, вы слишком многого ожидаете от 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(), чтобы установить его для каждого элемента. Прокрутка будет учитывать размер виджета.

person mike    schedule 07.09.2016