3

我正在尝试从 QTableView 小部件(下面复制的片段)返回所选行的向量,但是返回的值与选择不对应,我相信我不了解 QTableView 的 QModelIndexList/QModelIndex。你能让我知道我错在哪里或从 QTableView 访问所选项目的正确方法吗?C_model 的类型为 QStandardItemModel

for(int i = 0; i < c_model->rowCount(); i++)
  {
    if (selectionModel->isRowSelected(i, QModelIndex()))
    {
      QStringList selection;
      std::vector<std::string> currentIndexValues;
      for (int j = 0; j < c_model->columnCount(); j++)
      {
        QVariant q = c_model->data(c_model->index(i, j));
        selection.append(q.toString());

        currentIndexValues.push_back(q.toString().toLocal8Bit().constData());
        printf(" %s\t ", currentIndexValues[j].c_str());
      }
      printf("\n");
      v_selectedItems.push_back(currentIndexValues);
    }
  }

谢谢

4

1 回答 1

5

QAbstractItemView(的基类)为此QTableView提供了一个。QItemSelectionModel您可以通过QTableView::itemSelectionModel()访问该模型 ,然后通过QItemSelectionModel::selectedRows()检索选定的行:

QModelIndexList selectedRows = yourTableView->selectionModel()->selectedRows();

foreach( QModelIndex index, selectedRows )
{
    int row = index.row();
}
于 2012-12-05T14:03:21.007 回答