Название: tableView и autoScroll Отправлено: Flakes от Октября 08, 2008, 08:37 Я делаю selection где то за пределами видимости, нужно скролинг автоматом бежал например на первую строчку из selection, однако ничего никуда не бежит. Я бы и сам делал бы scrollTo(), но нужный, как мне кажется, метод horizontalOffset() - приватный.
По дефолту autoScroll для tableView включен, но либо он не работает - либо я не догоняю, что он должен делать, но явно не то, что мне нужно. Название: Re: tableView и autoScroll Отправлено: registrationfedser87 от Октября 08, 2008, 09:08 Тебе наверно надо использовать selectionModel. Посмотри пример demos/interview ,наверно поможет.
Название: Re: tableView и autoScroll Отправлено: Flakes от Октября 08, 2008, 09:14 да, вроде оно. Спасибо, буду разбираться.
Название: Re: tableView и autoScroll Отправлено: Flakes от Октября 08, 2008, 10:57 не знаю каким чудом оно там работает, но работает с юзером только. Если я делаю ручной select, за пределами view - выделяется как надо, но скрол на ту позицию не идет ??? Как раз то что меня и волнует...
Код: ...... Разъясните, может селекшн мышкой чем то отлечатеся от метода select()? UPD: Делая какие нить манипуляции с таблицей и ее обновляя затем - я могу восстановить селекшн, но не положение скрола. Поэтому я повторюсь, на первых парах мне хватило бы координат текущего скролл-положения, и я затем бы делал scrollTo() на прежнее место. А в идеале, я хочу конечно, чтоб эта сабака сама скролила куда надо, как в примере! UPD2: Я думаю тут вся магия вокруг фокуса, этой пунктирной рамочки. Делая селекшн - с фокусом ничего не происходит, его либо нет вообще, либо он на самом первом элементе остается. На картинке я сделал селекшн только 5го элемента, который в пределах видимости, как видно фокус торчит на первом: (http://xs432.xs.to/xs432/08413/2008-10-09_071526626.png) Конечно же если выделять вне видимости - тут то и жопа: как переместив фокус на нужный элемент (не путайте с фокусом виджета) - думаю все соскролится на него. Название: Re: tableView и autoScroll Отправлено: Flakes от Октября 09, 2008, 06:42 Я вижу одно решение. Оказывается scrollTo(const QModelIndex & index) (http://doc.trolltech.com/4.4/qabstractitemview.html#scrollTo) умеет скролить по нужному индексу (как я сразу не заметил), но это виртуальный метод [pure virtual]. Это значит нужно наследовать QTableView и самому реализовывать его? И тут я застреваю...
Объясните кто-нить мне балбесу, зачем такие виртуальные методы, если ни в одном классе, наследующим базовый QAbstractItemView, они не реализованы? Название: Re: tableView и autoScroll Отправлено: denka от Октября 09, 2008, 09:27 Я вижу одно решение. Оказывается scrollTo(const QModelIndex & index) (http://doc.trolltech.com/4.4/qabstractitemview.html#scrollTo) умеет скролить по нужному индексу (как я сразу не заметил), но это виртуальный метод [pure virtual]. Это значит нужно наследовать QTableView и самому реализовывать его? И тут я застреваю... Сей метод чисто виртуальный только у QAbstractItemView. У наследников же этого класса эти ф-ции даже очень реализованы. Если бы это было не так, то не возможно было создавать экземпляры этих объектов, т.к. С++ не допускает создание экземпляров классов с чисто виртуальными методами.Название: Re: tableView и autoScroll Отправлено: Flakes от Октября 09, 2008, 20:10 Так и есть, мне было лень даже проверить :) Проблема решена тогда...
UPD: В совокупности методов этих методов все теперь как надо: Код: view->verticalScrollBar()->setValue(); |