| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Проблема с методом QTableView::scrollTo(...) |
| Автор: caustic 18.4.2008, 09:17 | ||
| Доброго времени суток! У меня реализован простейший поиск по данным в QTableView (t_cards). Модель данных - card_model. При совпадении с искомым текстом нужно, чтобы t_cards промотал ползунок до найденной строки. Указанный ниже код работает верно, кроме того, что никакой перемотки не происходит.
В описании scrollTo сказано, что это "чисто виртуальная функция" в базовом классе. Но ее реализация для QTableView уже есть. void QAbstractItemView::scrollTo ( const QModelIndex & index, ScrollHint hint = EnsureVisible ) [pure virtual] Пробовал и разные ScrollHint, никакой разницы. Что может быть не так? |
| Автор: Ken 21.4.2008, 00:47 |
| Смотрите пример по: http://www.crossplatform.ru/documentation/qtdoc4.3/itemviews-chart-pieview-cpp.php В оффициальном пакете: examples/itemviews/chart/pieview.cpp Они переопределили функцию scrollTo (). Попробуйте, надеюсь, поможет. |
| Автор: SABROG 21.4.2008, 08:14 | ||
Лучше разобраться почему не работает оригинальный scrollTo:
|
| Автор: caustic 23.4.2008, 09:50 |
| Спасибо за предложения! Перерыл кучу исходников, пытался переопределять метод. Позже выяснил, что оригинальный scrollTo вполне нормально работает, если текущий индекс устанавливается мышкой прямо на QTableView. Долго не мог понять, в чем косяк... В итоге, все оказалось очень просто. Довольно давно для организации сортировки в QTableView я установил QSortFilterProxyModel вместо модели card_model. А текстовый поиск осуществлялся, как и раньше, по card_model. Вот индексы и не совпадали! Надо своевременно вносить изменения по всему коду, а то память - штука ненадежная. |
| Автор: Любитель 23.4.2008, 13:03 | ||
|