如何在 QTableView 中获取选定的行

Posted

技术标签:

【中文标题】如何在 QTableView 中获取选定的行【英文标题】:how to get selected rows in QTableView 【发布时间】:2011-08-21 02:44:13 【问题描述】:

看了很多关于获取所选行号的帖子,我真的很困惑。

您如何使用QStandardItemModelQTableView 中获得行号,我在下面使用了选择模型和行为

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

如果你有自己的选择方式,你能解释一下它是如何工作的。 感谢您的帮助!

【问题讨论】:

【参考方案1】:

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)
...

【讨论】:

供参考:方法是inherited from QAbstractItemView【参考方案2】:

检查QItemSelectionModel类的selectedRows方法。

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();

【讨论】:

可以用模型名代替表名吗?【参考方案3】:

尝试:

QModelIndexList indexList = yourTableView->selectionModel()->selectedIndexes();
int row;
foreach (QModelIndex index, indexList) 
    row = index.row();
    ....

【讨论】:

我想知道如果你解析一列,你会删除同一行两次(或更可能是其他行)。

以上是关于如何在 QTableView 中获取选定的行的主要内容,如果未能解决你的问题,请参考以下文章

如何从QTableView的选定行获取值?

PyQt:QTableView + QSqlTableModel - 将所有选定的行或列复制并粘贴到记事本或 Excel 中

如何从 QTableView 获取活动/选定的 QRadioButton

PyQt5 QTableView:如何在保持默认样式/颜色的同时禁用用户交互/选择?

在 QTableView 中移动完整的行

Qt C++ 从 QTableView 中获取选定行的每个单元格的数据