Russian Qt Forum
Сентябрь 30, 2024, 22:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Расширить выборку ячеек до строк  (Прочитано 1985 раз)
Flakes
Гость
« : Ноябрь 02, 2009, 23:40 »

Задача состоит в том, что можно делать селект единичных ячеек, если выбрано больше одной ячеки - расщирить до целой строки.

Вариант 1, работает, но при сбросе селекшина назад в QAbstractItemView::SelectItems уже не ставится.
Вариант 2, не селектится больше одной ячейки.
Вариант 3, ничего не происходит совсем, но именно он мне и интересен, по моему самый рациональный.

Не стал закоментировать все варианты, чтоб была видна подсветка.

Код
C++ (Qt)
class MyView : public QTableView
{
...
public slots:
void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
...
}
 
void MyView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
{
// [1]
if (selectionModel()->selection().indexes().size() > 1){
setSelectionBehavior(QAbstractItemView::SelectRows);
} else {
setSelectionBehavior(QAbstractItemView::SelectItems);
}
 
// [2]
if (selectionModel()->selection().indexes().size() > 1){
for (int i = 0; i < selected.indexes().size(); ++i){
selectRow(selected.indexes().at(i).row());
}
}
 
// [3]
if (selectionModel()->selection().indexes().size() > 1){
selectionModel()->select(selected, QItemSelectionModel::Rows);
}
 
QTableView::selectionChanged(selectionModel()->selection(), deselected);
}
 
« Последнее редактирование: Ноябрь 02, 2009, 23:42 от Flakes » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.116 секунд. Запросов: 21.