QT4:Можно ли сделать так, чтобы QListView прокручивался плавно?

StackOverflow https://stackoverflow.com/questions/2016323

  •  19-09-2019
  •  | 
  •  

Вопрос

У меня есть QListView в режиме значков с большим количеством значков, так что появляется полоса прокрутки, но прокрутка не плавная, и это IMHO сбивает пользователя с толку, поскольку при каждой прокрутке она резко переходит из одной точки в другую.Я хотел бы сделать прокрутку плавной, но я ничего не нашел в документах.Возможно ли это?

Это было полезно?

Решение

Если я правильно понял ваш вопрос, вы хотели бы переопределить поведение виджета при прокрутке.Я предполагаю, что происходит то, что listview прокручивается по высоте элемента всякий раз, когда пользователь нажимает на стрелку прокрутки (отмеченную как b на изображении ниже).

альтернативный текст http://qt.nokia.com/doc/4.6/images/qscrollbar-picture.png

Для вертикальной полосы прокрутки, подключенной к списковому представлению, стрелки прокрутки обычно перемещают текущее положение на одну "строку" вверх или вниз и немного регулируют положение ползунка.Я полагаю, что строка в данном случае - это высота значка.Вы можете регулировать высоту элементов, устанавливая и делегат элемента (setItemDelegate) и переопределяющий его метод sizeHint.Хотя это не помогло бы вам решить эту проблему.Что вы могли бы попробовать, так это создать потомок QListView и переопределить его метод updateGeometries .Там вы можете настроить шаг вертикальной полосы прокрутки на нужное вам значение, я думаю, 1 или 2 для этой задачи.Ниже приведен пример пользовательского listview:

class TestListView : public QListView
{
Q_OBJECT
public:
    explicit TestListView(QWidget *parent = 0);

protected:
    virtual void updateGeometries();
};

TestListView::TestListView(QWidget *parent) :
    QListView(parent)
{
    //???
}

void TestListView::updateGeometries()
{
    QListView::updateGeometries();
    verticalScrollBar()->setSingleStep(2);
}

надеюсь, это поможет, с уважением

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top