Задача состоит в том, что можно делать селект единичных ячеек, если выбрано больше одной ячеки - расщирить до целой строки.
Вариант 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);
}