Russian Qt Forum

Qt => Model-View (MV) => Тема начата: xintrea от Март 30, 2016, 15:13



Название: QTableView. Как узнать номер колонки по которой призведен клик при ::SelectRows?
Отправлено: xintrea от Март 30, 2016, 15:13
Наткнулся на такую проблему, не знаю как обойти. Если QTableView настроить на выделение строки:

Код:
setSelectionBehavior(QAbstractItemView::SelectRows);

то тогда метод QModelIndex.column() для табличного курсора всегда будет возвращать 0, независимо от того, в какую колонку кликнул пользователь:

Код:
QModelIndexList selectItems=selectionModel()->selectedIndexes();
QModelIndex index=selectItems.at(0);
qDebug() << "Click on column: " << index.column();

Click on column: 0

Таким образом получается, что невозможно узнать, по какому столбцу был произведен клик.

Или можно узнать номер столбца? А как?


Название: Re: QTableView. Как узнать номер колонки по которой призведен клик при ::SelectRows?
Отправлено: gil9red от Март 30, 2016, 15:40
Т.е. вы выбрали выделение строки, запросили список выделенных ячеек, из списка всегда берете первую и удивляетесь, что первая выделенная ячейка для строки имеет первый столбец? :)

Попробуйте использовать http://doc.qt.io/qt-4.8/qitemselectionmodel.html#currentIndex


Название: Re: QTableView. Как узнать номер колонки по которой призведен клик при ::SelectRows?
Отправлено: Igors от Март 31, 2016, 04:30
Таким образом получается, что невозможно узнать, по какому столбцу был произведен клик.

Или можно узнать номер столбца? А как?
Ну никто не запретит повесить фильтр на mousePressed, но неясно где/как Вы собираетесь это использовать. Напр юзер меняет selection с клавы - какая тогда колонка ожидается?


Название: Re: QTableView. Как узнать номер колонки по которой призведен клик при ::SelectRows?
Отправлено: xintrea от Март 31, 2016, 12:10
Попробуйте использовать http://doc.qt.io/qt-4.8/qitemselectionmodel.html#currentIndex

Это сработало, благодарю.