QTreeView获取选中行(多行选中)
QTreeView selectionMode设置为ExtendedSelection。
代码示例:
QItemSelectionModel *selections = ui.treeViewCkResult->selectionModel();
//QModelIndexList selectedindexes = selections->selectedRows(); //QT5.2.0版本中此api可以直接使用,不会崩溃
QModelIndexList selectedindexes;
//the QSet contains pairs of parent modelIndex
//and row number
QSet< QPair<QModelIndex, int> > rowsSeen;
const QItemSelection ranges = selections->selection();
for (int i = 0; i < ranges.count(); ++i)
{
const QItemSelectionRange &range = ranges.at(i);
QModelIndex parent = range.parent();
for (int row = range.top(); row <= range.bottom(); row++)
{
QPair<QModelIndex, int> rowDef = qMakePair(parent, row);
if (!rowsSeen.contains(rowDef))
{
rowsSeen << rowDef;
if (selections->isRowSelected(row, parent))
{
selectedindexes.append(m_CkRecordProxyModel->index(row, 0, parent));
}
}
}
}
for (QList<QModelIndex>::iterator it = selectedindexes.begin();it != selectedindexes.end();it++)
{
QModelIndex ModelIndex = *it;
//此处已获取到选中的QModelIndex ,接下来做自己的逻辑处理
//TODO
}