QT QTableWidget设置了多行选中后,如何获取所有选中行的索引

本文介绍了一种使用Qt框架获取表格视图中多个选定行索引的方法。通过利用QItemSelectionModel来获取所有选中项目的模型索引,并将其转换为行索引列表。最后对索引列表进行排序并去除重复项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


不啰嗦,直接上代码:

 

std::vector<int> vecItemIndex;//保存选中行的索引
QItemSelectionModel *selections = ui.fileTable->selectionModel(); //返回当前的选择模式  
QModelIndexList selectedsList = selections->selectedIndexes(); //返回所有选定的模型项目索引列表  

for (int i = 0; i < selectedsList.count(); i++)
{
    vecItemIndex.push_back(selectedsList.at(i).row());
}
std::sort(vecItemIndex.begin(), vecItemIndex.end());
vecItemIndex.erase(std::unique(vecItemIndex.begin(), vecItemIndex.end()), vecItemIndex.end());

 

### 获取 QTQTableWidget 当前选中数 在 Qt 中,`QTableWidget` 提供了多种方法来处理用户交互,其中包括获取当前选中。以下是如何获取 `QTableWidget` 中当前选中数的具体实现。 #### 使用 `currentRow()` 方法 如果只需要知道当前活动(即光标所在的),可以使用 `QTableWidget` 的 `currentRow()` 方法。它返回的是当前索引值,如果没有选中任何则返回 `-1`。 ```cpp int currentRowNumber = ui->tableWidget->currentRow(); if (currentRowNumber != -1) { qDebug() << "Current Selected Row Index:" << currentRowNumber; } else { qDebug() << "No row is currently selected."; } ``` 以上代码展示了如何利用 `currentRow()` 来检测并打印当前被激活的号[^1]。 #### 使用 `selectedItems()` 统计选中数量 对于多行择的情况,可以通过统计由 `selectedItems()` 返回的结果集大小除以表格总列数得出具体有多少整被完全标记出来: ```cpp QList<QTableWidgetItem *> selectedItemList = ui->tableWidget->selectedItems(); int totalColumns = ui->tableWidget->columnCount(); if (!selectedItemList.isEmpty()) { int numberOfSelectedRows = selectedItemList.size() / totalColumns; qDebug() << "Total Number Of Fully Selected Rows Is:" << numberOfSelectedRows; } else { qDebug() << "There Are No Selected Items In The Table Widget."; } ``` 这里假设每一都具有相同的列数目;因此可以根据已知条件计算出确切的数量关系[^2]。 #### 调用 `selectionModel()->hasSelection()` 判断是否存在有效择区域 另外一种更为通用的方式就是访问底层模型接口——通过 `selectionModel()` 对象查询是否有正在进的有效范围定义存在: ```cpp bool isSelectedAvailable = ui->tableWidget->selectionModel()->hasSelection(); if(isSelectedAvailable){ qDebug()<<"Some part of the table has been selected"; }else{ qDebug()<<"Nothing within this widget got highlighted yet!"; } ``` 这种方法不仅限于单个或者连续几情况适用,即使面对复杂不规则形状也能给出准确反馈结果[^3]。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值