как получить выбранные строки в QTableView

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

Как вы получаете числа ROW в QTableView, используя QStandardItemModel, я использовал ниже модель выбора и поведение как

setSelectionBehavior(QAbstractItemView::SelectRows);
setSelectionMode(QAbstractItemView::SingleSelection);

и если у вас есть свой способ выбора, можете ли вы объяснить, как это работает. Спасибо за помощь!


person shett73    schedule 08.05.2011    source источник


Ответы (3)


Метод selectionModel() возвращает QItemSelectionModel.

Вы можете использовать класс QItemSelectionModel для проверки/изменения/другого выбора.

Пример:

QItemSelectionModel *select = table->selectionModel();

select->hasSelection() //check if has selection
select->selectedRows() // return selected row(s)
select->selectedColumns() // return selected column(s)
...
person Luca    schedule 27.07.2011
comment
Для справки: метод был унаследован от QAbstractItemView. - person user202729; 01.07.2018

Проверьте метод selectedRows в QItemSelectionModel Класс .

QModelIndexList selection = yourTableView->selectionModel()->selectedRows();

// Multiple rows can be selected
for(int i=0; i< selection.count(); i++)
{
    QModelIndex index = selection.at(i);
    qDebug() << index.row();
}
person Alexander    schedule 22.01.2015
comment
Можно ли сделать это с именем модели вместо имени таблицы? - person Thomas Williams; 05.04.2017

пытаться:

QModelIndexList indexList = yourTableView->selectionModel()->selectedIndexes();
int row;
foreach (QModelIndex index, indexList) {
    row = index.row();
    ....
}
person louis.luo    schedule 31.12.2011
comment
Интересно, если вы проанализируете столбец, вы удалите одну и ту же строку дважды (или, что более вероятно, какую-то другую строку). - person Mikhail; 06.01.2014