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

时间:2013-09-28 20:29:43

标签: c++ qt

有没有办法从表格视图中获取所选行的数据?我用过 QModelIndexList ids = ui->tableView->selectionModel()->selectedRows();返回所选行的索引列表。我不需要索引。我需要来自所选行的每个单元格的数据。

3 个答案:

答案 0 :(得分:7)

你可以尝试这个

int rowidx = ui->tblView->selectionModel()->currentIndex().row();
ui->txt1->setText(model->index(rowidx , 0).data().toString());
ui->txt2->setText(model->index(rowidx , 1).data().toString());
ui->txt3->setText(model->index(rowidx , 2).data().toString());
ui->txt4->setText(model->index(rowidx , 3).data().toString());

答案 1 :(得分:2)

QVariant data(const QModelIndex& index, int role) const

用于返回数据。如果您需要根据QModelIndex行和列在此处获取数据,并从某个容器中检索它,可能

std::vector<std::vector<MyData> > data;

您必须定义此类映射,并在data()setData()函数中使用它来处理与基础模型数据的交互。

或者QAbstractItemModelQTreeView提供了将类TreeItem分配给每个QModelIndex的方法,这样您就可以使用{{1}检索指向每个数据的指针从 QModelIndex.internalPointer()函数返回的指针:

static_cast

所以你可以创建一些映射:

TreeItem *item = static_cast<TreeItem*>(index.internalPointer());

example of implementation

答案 2 :(得分:1)

Try this for getting data. selectedRows(0) indicates first column of selected rows, selectedRows(1) indicates second column of selected rows row likewise

QItemSelectionModel *select = ui->existingtable->selectionModel();
qDebug()<<select->selectedRows(0).value(0).data().toString();
qDebug()<<select->selectedRows(1).value(0).data().toString();
qDebug()<<select->selectedRows(2).value(0).data().toString();
qDebug()<<select->selectedRows(3).value(0).data().toString();