如何在 QTableView 中获取选定的行
Posted
技术标签:
【中文标题】如何在 QTableView 中获取选定的行【英文标题】:how to get selected rows in QTableView 【发布时间】:2011-08-21 02:44:13 【问题描述】:看了很多关于获取所选行号的帖子,我真的很困惑。
您如何使用QStandardItemModel
在QTableView
中获得行号,我在下面使用了选择模型和行为
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 fromQAbstractItemView
。【参考方案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 中获取选定的行的主要内容,如果未能解决你的问题,请参考以下文章
PyQt:QTableView + QSqlTableModel - 将所有选定的行或列复制并粘贴到记事本或 Excel 中
如何从 QTableView 获取活动/选定的 QRadioButton