суббота, 24 октября 2009 г.

QTableView прокрутка строк

Понадобилось по нажатию на кнопке формы прокручивать таблицу. Т.е. заменить scrollbar.
По нажатию кнопки сверху, поднимаемся на одну строку.
По нажатию кнопки снизу, опускаемся.
У QTableView таких методов нет. Зато есть методы scrollToBottom () и scrollToTop (), наследуемые от QAbstractItemView.
Также есть метод scrollTo ( const QModelIndex &, ScrollHint ), но у QModelIndex нет переопределённых операторов ++ и --.
Идём в исходники QAbstractItemView, который наследуется QTableView и видим:

void QAbstractItemView::scrollToTop()
{
verticalScrollBar()->setValue(verticalScrollBar()->minimum());
}

Значит делаем так:
void MyClass::scrollDown()
{
int current = tvPreview->verticalScrollBar()->value();
tvPreview->verticalScrollBar()->setValue(++current);

}


void MyClass::scrollUp()
{
int current = tvPreview->verticalScrollBar()->value();
tvPreview->verticalScrollBar()->setValue(--current);
}

Комментариев нет: