我在从QTableWidget获取所选行时遇到问题。我有这样的表:
[id] [ key ]
0 test
1 pass
我想得到每一行的关键值。我试过QTableWidget-> selectedIndexes();但它说它受到保护,我无法访问它。当我尝试QTableWidget-> SelectionModel-> selectedIndexes时,我不知道如何遍历列表并获取键值。有谁知道更好的方法我该怎么办? 问候。
答案 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();