QTableWidget中SelectedRows的列表

时间:2013-01-01 20:45:50

标签: c++ qt

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

[id]  [ key ]
 0     test
 1     pass

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

2 个答案:

答案 0 :(得分:1)

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

您始终可以访问任何项目视图/窗口小部件的所谓“选择模型”。 QTableWidget继承自QAbstractItemView,它会为您提供access to this special model。此模型可以将selected rows作为QModelIndex的列表告诉您,然后可以告诉您the row。一旦获得它们,您可以访问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();

答案 1 :(得分:0)

由于您使用的是QTableWidget,因此您可能希望拨打selectedItems()。您的结果将基于您通过setSelectionBehavior()

设置选择行为的结果

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

QTableWigetItem *keyItem = table->item(anItem->row(), 1);
QString val = keyItem->text();