Извлечь данные из QTableView - PullRequest
1 голос
/ 30 ноября 2011

У меня есть экземпляр QTableView, ограниченный выбором одной строки.Я не хочу беспокоиться о том, в какую ячейку нажимает пользователь, но он всегда должен извлекать данные в (selectedRow, 0).

Пока я делаю следующее:

QModelIndexList indices = _ui->_tbl->selectionModel()->selection().indexes();
QModelIndex id = indices.at(0).sibling(indices.at(0).row(),0);

Есть ли лучший способ?

Ответы [ 3 ]

5 голосов
/ 30 ноября 2011

Как указано в Qt doc относительно currentIndex:

Если текущий режим выбора не выбран, элемент также будет выбран

Так что вы можете сделать это быстрее:

QModelIndex index = _ui->_tbl->currentIndex() ;
QModelIndex id = index.sibling(index.row(),0) ;
1 голос
/ 30 ноября 2011

Использование QItemSelectionModel::selectedRows вынимает один шаг. Он дает вам индекс для определенного столбца (по умолчанию o). Таким образом:

QModelIndex index = _ui->_tbl->selectionModel()->selectedRows(0).at(0);
0 голосов
/ 30 ноября 2011

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

QModelIndex id = _ui->_tbl->model()->index(_ui->_tbl->currentIndex().row(),0);

К сожалению Qt не поддерживает (и я не могу понять, почему) конструктор QModelIndex с row и column в качестве аргументов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...