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 に答える