Ответ 1
Если я правильно понял ваш вопрос, вы бы хотели переопределить поведение прокрутки виджета. Я предполагаю, что происходит, что listview получает прокрутку по высоте элемента, когда пользователи нажимают стрелку прокрутки (помечен как b на изображении ниже).
alt text http://qt.nokia.com/doc/4.6/images/qscrollbar-picture.png
Для вертикальной полосы прокрутки, связанной с видом списка, стрелки прокрутки обычно перемещают текущую позицию по одной "линии" вверх или вниз и корректируют положение ползунка на небольшую величину. Я считаю, что в этом случае это высота значка. Вы можете отрегулировать высоту элементов, установив и элемент делегата (setItemDelegate) и переопределив его метод sizeHint. Хотя это не поможет вам решить эту проблему. Вы можете попробовать создать потомок QListView и переопределить его метод updateGeometries. Там вы можете настроить шаг вертикальной полосы прокрутки на нужное значение, я думаю, 1 или 2 для этой задачи. Ниже приведен пример пользовательского списка:
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);
}
надеюсь, что это поможет, считает