获取tableview中QStandardItemModel选中的行,并获取每行所有item数据
时间: 2023-05-26 10:02:26 浏览: 71
可以使用QStandardItemModel的selectedRows()方法获取选中的行,然后遍历每行的每个item,获取它们的数据。
示例代码:
```python
selected_indexes = tableview.selectedIndexes() # 获取选中的索引
rows = set(index.row() for index in selected_indexes) # 获取选中的行号
model = tableview.model() # 获取QStandardItemModel
for row in rows:
items = []
for column in range(model.columnCount()):
index = model.index(row, column)
item = model.data(index)
items.append(item)
print(items) # 打印每行的所有item数据
```
这段代码先通过selectedIndex()方法获取到选中的索引,然后根据索引获取选中的行号,并遍历每行的每个column获取对应的item数据。最后打印每行的所有item数据。
相关问题
QTableview绑定了QStandardItemModel,如何获取选中行的item包括隐藏列的tiem
可以使用QTableView的selectedIndexes()函数获取选中行的所有索引,然后遍历这些索引,通过QStandardItemModel的itemFromIndex()函数获取对应的item,包括隐藏列的item也能获取到。
示例代码:
```
QModelIndexList selectedIndexes = tableView->selectionModel()->selectedIndexes();
foreach (QModelIndex index, selectedIndexes) {
QStandardItem *item = model->itemFromIndex(index);
// TODO: 处理获取到的item
}
```
pyqt5中QTableview绑定了QStandardItemModel,如何获取选中行的item包括隐藏列的tiem,具体效率高的实现代码
可以使用QItemSelectionModel来获取选中行的item,包括隐藏列的item。具体实现代码如下:
```python
from PyQt5.QtGui import QStandardItemModel, QItemSelectionModel
from PyQt5.QtWidgets import QApplication, QTableView
class TableView(QTableView):
def __init__(self, parent=None):
super().__init__(parent)
self.model = QStandardItemModel(10, 5)
self.setModel(self.model)
self.setSelectionBehavior(QTableView.SelectRows)
def getSelectedItems(self):
items = []
selection_model = self.selectionModel()
indexes = selection_model.selectedIndexes()
for index in indexes:
item = self.model.itemFromIndex(index)
items.append(item)
return items
```
该代码中,TableView类继承自QTableView,同时绑定了一个QStandardItemModel。在getSelectedItems方法中,使用QItemSelectionModel获取选中行的所有索引,并通过索引获取QStandardItemModel中的item。
这种方式可以获取到所有的item,包括隐藏列的item,但是效率可能会比较低,因为遍历所有的索引需要一定的时间。如果需要进一步提高效率,可以考虑采用另外一种方式,即通过QAbstractItemView中的selectedIndexes()方法直接获取选中行的item。具体实现代码如下:
```python
class TableView2(QTableView):
def __init__(self, parent=None):
super().__init__(parent)
self.model = QStandardItemModel(10, 5)
self.setModel(self.model)
self.setSelectionBehavior(QTableView.SelectRows)
def getSelectedItems(self):
items = []
indexes = self.selectedIndexes()
for index in indexes:
item = self.model.itemFromIndex(index)
items.append(item)
return items
```
该代码比第一种方式更加简单,由于直接调用QAbstractItemView中的selectedIndexes()方法获取选中行的item,因此效率会更高一些。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)