1

QTableWidgetから選択した行を取得するのに問題があります。私はこのようなテーブルを持っています:

[id]  [ key ]
 0     test
 1     pass

すべての行のキー値を取得したいと思います。QTableWidget-> selectedIndexes();を試しました。しかし、それは保護されていると言っており、私はそれにアクセスできません。QTableWidget-> SelectionModel-> selectedIndexesを試したとき、リストをループしてキー値を取得する方法がわかりません。誰かが私がそれを行うためのより良い方法を知っていますか?よろしく。

4

2 に答える 2

1

テーブルウィジェットの選択動作を設定してを選択すると仮定します。

任意のアイテムビュー/ウィジェットのいわゆる「選択モデル」にいつでもアクセスできます。QTableWidgetから継承します。QAbstractItemViewこれにより、この特別なモデルにアクセスできます。このモデルは、選択した行をのリストとして表示し、次にQModelIndexを表示できます。それらを取得したら、テーブルのコンテンツにアクセスできます。この場合は、インデックス1の列(キー列)のテキストにアクセスできます。

static const KEY_COLUMN = 1;

QList<QString> selectedKeys;
QItemSelectionModel *selectionModel = ui->tableWidget->selectionModel();
foreach(QModelIndex index, selectionModel->selectedRows())
    selectedIDs << ui->tableWidget->item(index->row(), KEY_COLUMN)->text();
于 2013-01-01T20:52:10.810 に答える
0

を使用しているのでQTableWidget、おそらくを呼び出したいと思うでしょうselectedItems()。結果は、を介して選択動作を設定したものに基づきます。setSelectionBehavior()

アイテムのリストがある場合、2番目の列のアイテムを具体的に取得できます(まだ選択されていない場合)。

QTableWigetItem *keyItem = table->item(anItem->row(), 1);
QString val = keyItem->text();
于 2013-01-01T20:54:29.213 に答える