QT学习——QTreeView获取选中单行数据和多行数据

个人感觉QTreeView有些地方的使用没有MFC的CListCtrl方便(比如在不响应单击信号的情况下,获取选中行的数据(单行和多行)),也许因为我是新手吧。
一、获取单行选中的数据

QModelIndex selected = ui.treeView->currentIndex(); //选中的行
selected = selected.sibling(selected.row(),0); //0 就是第一列元素,1就是第二列元素,依此类推
QString strColumn0(ui.treeView->model()->itemData(selected).values()[0].toString()); //由你自己每一列的QVariant绑定的值,决定获取数据的方式

以上是获取单行选中的每一列数据的关键点,至于需要获取哪些列及如何保存获取的数据,就看你的需要了。

二、获取多行数据

//获取选中的行,默认获取选中行的第一列数据(0),列的索引值和上面一样0123......
QModelIndexList selected = ui.treeView->selectionModel()->selectedRows(1);

QList::const_iterator cit;
QModelIndex temp;
QString strSelect;

for (cit = selected.begin(); cit != selected.end(); ++cit)
{
    temp = *cit;
    strSelect = ui.treeView->model()->itemData(temp).values()[0].toString();
}

如果想要获取选中行的所有列数据,则可以使用
QModelIndexList selected = ui.treeView->selectionModel()->selectedIndexes();
注意,selected里面保存的数据,先是所有行的第一列输入,然后是所有行的第二列数据,依次类推。

你可能感兴趣的:(编程知识)