Russian Qt Forum
Ноябрь 23, 2024, 03:45
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Model-View (MV)
>
программно выделить несколько строк в QTableView
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: программно выделить несколько строк в QTableView (Прочитано 10609 раз)
Vladimir
Крякер
Offline
Сообщений: 305
программно выделить несколько строк в QTableView
«
:
Ноябрь 12, 2014, 16:29 »
Доброго дня! если выделять selectRow(index) каждую строчку, то при наличии больше 200-300 строк процесс очень тормозится. как это можно сделать за один раз? selectAll(); делает выделение быстро, но мне нужно выделять не все, а только выбранные строки.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: программно выделить несколько строк в QTableView
«
Ответ #1 :
Ноябрь 12, 2014, 16:31 »
Смотри в сторону QTableView::selectionModel ().
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Vladimir
Крякер
Offline
Сообщений: 305
Re: программно выделить несколько строк в QTableView
«
Ответ #2 :
Ноябрь 12, 2014, 16:37 »
Цитата: Пантер от Ноябрь 12, 2014, 16:31
Смотри в сторону QTableView::selectionModel ().
у меня есть QItemSelectionModel selectModel, есть места где она мне возвращает список выделенных строк (индексы)
QModelIndexList indexes = selectModel->selectedRows(); но как с ее помощью выделить несколько строк я не нашел.
Записан
vulko
Гость
Re: программно выделить несколько строк в QTableView
«
Ответ #3 :
Ноябрь 12, 2014, 16:46 »
Цитировать
программно выделить несколько строк в QTableView
и
Цитировать
при наличии больше 200-300 строк процесс очень тормозится
не особо стыкуются...
попробуй
void QTableView::setSelection ( const QRect & rect, QItemSelectionModel::SelectionFlags flags ) [virtual protected]
Но тут придется вычислить QRect для выделения.
Записан
Vladimir
Крякер
Offline
Сообщений: 305
Re: программно выделить несколько строк в QTableView
«
Ответ #4 :
Ноябрь 12, 2014, 16:56 »
Цитата: vulko от Ноябрь 12, 2014, 16:46
Цитировать
программно выделить несколько строк в QTableView
и
Цитировать
при наличии больше 200-300 строк процесс очень тормозится
не особо стыкуются...
попробуй
void QTableView::setSelection ( const QRect & rect, QItemSelectionModel::SelectionFlags flags ) [virtual protected]
Но тут придется вычислить QRect для выделения.
да, имелось ввиду несколько десятков строк) а как правильно будет рассчитать эту область?
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: программно выделить несколько строк в QTableView
«
Ответ #5 :
Ноябрь 12, 2014, 18:20 »
Цитата: Vladimir от Ноябрь 12, 2014, 16:37
Цитата: Пантер от Ноябрь 12, 2014, 16:31
Смотри в сторону QTableView::selectionModel ().
у меня есть QItemSelectionModel selectModel, есть места где она мне возвращает список выделенных строк (индексы)
QModelIndexList indexes = selectModel->selectedRows(); но как с ее помощью выделить несколько строк я не нашел.
selectionModel нужна не только чтобы получить список выделенных строк
у selectionModel есть метод
select
, который принимает ссылку на
QItemSelection
, а тот позволяет указать область выделения с помощью своего метода
select
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Vladimir
Крякер
Offline
Сообщений: 305
Re: программно выделить несколько строк в QTableView
«
Ответ #6 :
Ноябрь 12, 2014, 19:04 »
Цитата: gil9red от Ноябрь 12, 2014, 18:20
Цитата: Vladimir от Ноябрь 12, 2014, 16:37
Цитата: Пантер от Ноябрь 12, 2014, 16:31
Смотри в сторону QTableView::selectionModel ().
у меня есть QItemSelectionModel selectModel, есть места где она мне возвращает список выделенных строк (индексы)
QModelIndexList indexes = selectModel->selectedRows(); но как с ее помощью выделить несколько строк я не нашел.
selectionModel нужна не только чтобы получить список выделенных строк
у selectionModel есть метод
select
, который принимает ссылку на
QItemSelection
, а тот позволяет указать область выделения с помощью своего метода
select
хорошо.. получается последний select принимает на вход верхний левый индекс выделения и правый нижний, т.е. все индексы в этой области, правильно я понимаю? а если по условиям выделения мне нужно выделить скажем 1,3,10,41,42,43,70,71.. строки, не сплошной массив строк, тогда как?
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: программно выделить несколько строк в QTableView
«
Ответ #7 :
Ноябрь 12, 2014, 19:15 »
Тогда, вручную указывайте, например, с помощью void QItemSelectionModel::select ( const QModelIndex & index, QItemSelectionModel::SelectionFlags command )
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Vladimir
Крякер
Offline
Сообщений: 305
Re: программно выделить несколько строк в QTableView
«
Ответ #8 :
Ноябрь 12, 2014, 19:21 »
Цитата: gil9red от Ноябрь 12, 2014, 19:15
Тогда, вручную указывайте, например, с помощью void QItemSelectionModel::select ( const QModelIndex & index, QItemSelectionModel::SelectionFlags command )
а это не будет тоже самое, что выделять selectRow(int row) у QTableView? т.е. получается все равно нужно пробегаться и по ОДНОЙ строчке выделять..
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: программно выделить несколько строк в QTableView
«
Ответ #9 :
Ноябрь 12, 2014, 19:30 »
Цитата: Vladimir от Ноябрь 12, 2014, 19:21
Цитата: gil9red от Ноябрь 12, 2014, 19:15
Тогда, вручную указывайте, например, с помощью void QItemSelectionModel::select ( const QModelIndex & index, QItemSelectionModel::SelectionFlags command )
а это не будет тоже самое, что выделять selectRow(int row) у QTableView? т.е. получается все равно нужно пробегаться и по ОДНОЙ строчке выделять..
Сами посмотрите и сравните:
http://code.woboq.org/qt5/qtbase/src/widgets/itemviews/qtableview.cpp.html#_ZN17QTableViewPrivate9selectRowEib
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Vladimir
Крякер
Offline
Сообщений: 305
Re: программно выделить несколько строк в QTableView
«
Ответ #10 :
Ноябрь 12, 2014, 19:41 »
Цитата: gil9red от Ноябрь 12, 2014, 19:30
Цитата: Vladimir от Ноябрь 12, 2014, 19:21
Цитата: gil9red от Ноябрь 12, 2014, 19:15
Тогда, вручную указывайте, например, с помощью void QItemSelectionModel::select ( const QModelIndex & index, QItemSelectionModel::SelectionFlags command )
а это не будет тоже самое, что выделять selectRow(int row) у QTableView? т.е. получается все равно нужно пробегаться и по ОДНОЙ строчке выделять..
Сами посмотрите и сравните:
http://code.woboq.org/qt5/qtbase/src/widgets/itemviews/qtableview.cpp.html#_ZN17QTableViewPrivate9selectRowEib
мда..попробовал. получилось чуть меньше, но это только из-за того, что выделился только первый столбец, а нужно выделять строку.. (там больше одного столбца), т.е. выделять все индексы строки и в итоге получится тоже самое, если даже не медленнее. засада
есть еще какие варианты?
Записан
Vladimir
Крякер
Offline
Сообщений: 305
Re: программно выделить несколько строк в QTableView
«
Ответ #11 :
Ноябрь 12, 2014, 19:47 »
А ссылочка отличная, удобно читать исходники. Спасибо gil9red!!!
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: программно выделить несколько строк в QTableView
«
Ответ #12 :
Ноябрь 12, 2014, 19:52 »
Цитата: Vladimir от Ноябрь 12, 2014, 19:47
А ссылочка отличная, удобно читать исходники. Спасибо gil9red!!!
Пожалуйста, сам этим сайтом одно время активно пользовался
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...