c++qtableviewt获取选中行并删除该行数据
时间: 2023-10-22 08:03:36 浏览: 170
获取选中行可以通过QTableView的selectedIndexes()函数获取,该函数返回一个QModelIndexList类型的选中索引列表,然后可以通过QModelIndex的row()方法获取选中行的行号。删除行可以通过QAbstractItemModel的removeRow()函数进行,例如:
```c++
QModelIndexList selectedIndexes = tableView->selectedIndexes();
for (int i = 0; i < selectedIndexes.count(); i++)
{
QModelIndex index = selectedIndexes.at(i);
int row = index.row();
tableView->model()->removeRow(row);
}
```
这段代码会获取选中行的行号,然后通过model()函数获取QAbstractItemModel类型的数据模型,再调用removeRow()函数删除该行数据。注意,这里只删除了数据,如果需要同时删除界面上的显示,还需要调用QTableView的reset()或update()函数更新界面。
相关问题
c++qtableviewt获取选中行的所有内容
可以通过以下步骤获取QTableView中选中行的所有内容:
1. 获取选中行的模型索引(QModelIndex):
```c++
QModelIndexList selectedRows = ui->tableView->selectionModel()->selectedRows();
```
2. 遍历选中行的模型索引,获取选中行的所有内容:
```c++
foreach(QModelIndex index, selectedRows)
{
QString column1 = model->data(model->index(index.row(), 0)).toString();
QString column2 = model->data(model->index(index.row(), 1)).toString();
// ...
}
```
其中,`model` 为 QTableView 的数据模型(QAbstractItemModel),`index.row()` 获取选中行的行号,`index.column()` 获取选中列的列号,`model->data()` 获取指定单元格的数据。根据实际情况,可以通过遍历选中行的模型索引获取选中行的所有内容。
qt 获取QtableWdiget所有选中行的数据并存入数组中
可以通过以下代码获取QTableWidget中所有选中行的数据并存入数组中:
```c++
QTableWidget* tableWidget = new QTableWidget();
// 假设有n行m列的表格
// 获取所有选中行的索引
QModelIndexList selectRows = tableWidget->selectionModel()->selectedRows();
int count = selectRows.count();
// 定义数组存储选中行的数据
QStringList selectedData;
// 遍历选中的行,获取数据并存入数组中
for (int i = 0; i < count; ++i) {
int row = selectRows.at(i).row(); // 获取选中行的索引
QString data = tableWidget->item(row, 0)->text(); // 获取该行第一列的数据
selectedData.append(data); // 存入数组中
}
// 输出选中行的数据
qDebug() << "Selected Data: " << selectedData;
```
这里假设QTableWidget对象为tableWidget,通过selectionModel()函数获取选择模型,再通过selectedRows()函数获取所有选中行的索引,最后通过遍历选中的行,获取数据并存入数组中。