1

我从 QTableWidget 获取选定的行时遇到问题。我有这样的表:

[id]  [ key ]
 0     test
 1     pass

我想获取每一行的键值。我试过 QTableWidget->selectedIndexes(); 但它说它受到保护,我无法访问它。当我尝试 QTableWidget->SelectionModel->selectedIndexes 时,我不知道如何循环遍历列表并获取键值。有谁知道更好的方法我该怎么做?问候。

4

2 回答 2

1

我假设您将表格小部件的选择行为设置为选择

您始终可以访问任何项目视图/小部件的所谓“选择模型”。QTableWidget继承自QAbstractItemView,这使您可以访问此特殊模型。这个模型可以告诉你选择的行作为一个列表QModelIndex,然后它可以告诉你该行。获得它们后,您可以访问table content,在您的情况下是索引为 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()

当您有一个项目列表时,您可以专门获取第二列项目(如果尚未选择它):

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