我从 QTableWidget 获取选定的行时遇到问题。我有这样的表:
[id] [ key ]
0 test
1 pass
我想获取每一行的键值。我试过 QTableWidget->selectedIndexes(); 但它说它受到保护,我无法访问它。当我尝试 QTableWidget->SelectionModel->selectedIndexes 时,我不知道如何循环遍历列表并获取键值。有谁知道更好的方法我该怎么做?问候。
我假设您将表格小部件的选择行为设置为选择行。
您始终可以访问任何项目视图/小部件的所谓“选择模型”。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();
因为你正在使用QTableWidget
,你可能想被调用selectedItems()
。您的结果将基于您设置的选择行为,通过setSelectionBehavior()
当您有一个项目列表时,您可以专门获取第二列项目(如果尚未选择它):
QTableWigetItem *keyItem = table->item(anItem->row(), 1);
QString val = keyItem->text();