C++ QTableWidget中选定的行列表

C++ QTableWidget中选定的行列表,c++,qt,C++,Qt,从QTableWidget获取所选行时出现问题。我有这样的桌子: [id] [ key ] 0 test 1 pass 我想得到每一行的键值。我尝试了QTableWidget->selectedIndex();但它说它是受保护的,我无法访问它。当我尝试QTableWidget->SelectionModel->SelectedIndex时,我不知道如何循环遍历列表并获取键值。有谁知道我该怎么做? 尊敬。我假设您将表格小部件的选择行为设置为选择行 您始终可以访问任何项目视图

从QTableWidget获取所选行时出现问题。我有这样的桌子:

[id]  [ key ]
 0     test
 1     pass
我想得到每一行的键值。我尝试了QTableWidget->selectedIndex();但它说它是受保护的,我无法访问它。当我尝试QTableWidget->SelectionModel->SelectedIndex时,我不知道如何循环遍历列表并获取键值。有谁知道我该怎么做?
尊敬。

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

您始终可以访问任何项目视图/小部件的所谓“选择模型”
QTableWidget
继承自
qabstractemview
,它为您提供了。此模型可以通过
QModelIndex
列表告诉您,然后可以告诉您。一旦获得它们,就可以访问索引为1的列(键列)中的文本

static const KEY\u COLUMN=1;
QList selectedKeys;
QItemSelectionModel*selectionModel=ui->tableWidget->selectionModel();
foreach(QModelIndex索引,selectionModel->selectedRows())
选择Edids tableWidget->item(索引->行(),键列)->text();

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

您始终可以访问任何项目视图/小部件的所谓“选择模型”
QTableWidget
继承自
qabstractemview
,它为您提供了。此模型可以通过
QModelIndex
列表告诉您,然后可以告诉您。一旦获得它们,就可以访问索引为1的列(键列)中的文本

static const KEY\u COLUMN=1;
QList selectedKeys;
QItemSelectionModel*selectionModel=ui->tableWidget->selectionModel();
foreach(QModelIndex索引,selectionModel->selectedRows())
选择Edids tableWidget->item(索引->行(),键列)->text();

因为您使用的是
QTableWidget
,所以您可能想呼叫。您的结果将基于您设置的选择行为,通过

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


因为您使用的是
QTableWidget
,所以您可能想要调用。您的结果将基于您设置的选择行为,通过

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


是的,我默认使用selectRows。假设我们有两列和两行。当我们执行ui->tableWidget->selectedItems()时,它会给我们4个项目,循环将花费更长的时间。我只需要获取行,而不是项目。这将是一个技巧,但我需要一个更快的方法。@OvérFlôwz哦,我以为它只返回2项。好吧,让我看看在这种情况下我们应该做什么……@ O'E.Frl O.WZ,我很高兴能帮助:P.S:对于更复杂的数据,考虑使用分离的模型/视图方法,而不是WIDGET类,它结合了模型和视图。至少,您应该知道这两种方法之间的区别。快乐编码@OvérFlôwz这应该有助于你理解我所说的方法的优点:-从一开始就学会用好的方法做事比以后再学要好。就我的2美分。:)学习Qt很开心!谢谢,我会查出来的。是的,默认情况下我有selectRows。假设我们有两列和两行。当我们执行ui->tableWidget->selectedItems()时,它会给我们4个项目,循环将花费更长的时间。我只需要获取行,而不是项目。这将是一个技巧,但我需要一个更快的方法。@OvérFlôwz哦,我以为它只返回2项。好吧,让我看看在这种情况下我们应该做什么……@ O'E.Frl O.WZ,我很高兴能帮助:P.S:对于更复杂的数据,考虑使用分离的模型/视图方法,而不是WIDGET类,它结合了模型和视图。至少,您应该知道这两种方法之间的区别。快乐编码@OvérFlôwz这应该有助于你理解我所说的方法的优点:-从一开始就学会用好的方法做事比以后再学要好。就我的2美分。:)学习Qt很开心!同样的回答,如果我把这个放在循环中,如果我们假设我们有2列2行,它将循环4次,但我只需要循环2次。同样的回答,如果我把这个放在循环中,如果我们假设我们有2列2行,它将循环4次,但我只需要循环2次。
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();
QTableWigetItem *keyItem = table->item(anItem->row(), 1);
QString val = keyItem->text();