pyqt5的qstandarditemmodel获取某一列数据
时间: 2023-04-03 13:01:31 浏览: 278
可以使用QStandardItemModel的index方法获取指定行列的数据,例如:
```python
model = QStandardItemModel()
# 假设有3行4列的数据
for row in range(3):
for column in range(4):
item = QStandardItem(str(row * 4 + column))
model.setItem(row, column, item)
# 获取第2列的数据
column_data = []
for row in range(model.rowCount()):
index = model.index(row, 1)
column_data.append(index.data())
print(column_data)
```
输出结果为:
```
['1', '5', '9']
```
相关问题
pyqt5中QTableview绑定了QStandardItemModel,如何快速获取选中行的item文本包括隐藏列的tiem文本,具体效率高的实现代码
可以使用QItemSelectionModel来获取选中的行和列,再从QStandardItemModel中获取对应的item,包括隐藏列的item。
以下是一个示例代码:
```python
from PyQt5.QtWidgets import QApplication, QTableView, QStandardItemModel, QItemSelectionModel
app = QApplication([])
# 创建QStandardItemModel并添加数据
model = QStandardItemModel()
model.setColumnCount(3)
for i in range(5):
row = []
for j in range(3):
item = QStandardItem(f"item {i},{j}")
row.append(item)
model.appendRow(row)
# 创建QTableView并绑定QStandardItemModel
view = QTableView()
view.setModel(model)
# 获取选中的行和列
selections = view.selectionModel().selectedIndexes()
# 遍历选中的行和列,获取对应的item
for selection in selections:
row = selection.row()
col = selection.column()
item = model.item(row, col)
if item:
text = item.text()
print(text)
```
这个示例代码可以获取所有选中的item文本,包括隐藏列的item文本。如果只需要特定列的item文本,可以加入一个过滤条件。
python的pyqt用户在tableview上修改数据后如何获取修改?
auto& stu : students) {
if (stu.score == score) {
res.push_back(stu);
}
}
在PyQt中,可以通过以下步骤获取用户在TableView上修改的数据:
1. 建立一个数据模型,如QStandardItemModel。
2. 将数据模型设置为TableView的模型,使用setModel()方法。
3. 为每一 return res;
}
private:
vector<Student> students; // 学生信息列表
};
int main() {
StudentManager sm列设置一个信号-槽连接,以便在用户编辑单元格时触发槽函数。
4. 在槽函数中;
// 添加学生信息
Student s1 = {"计算机学院", "计算机科学与技术,使用data()方法获取用户编辑后的数据。
下面是一个简单的示例代码:
```python
from PyQt5.QtWidgets import QApplication, QTableView, QStandardItemModel
from PyQt5.QtCore import Qt
app = QApplication([])
model = QStandardItemModel", "2019级1班", "20190101", "张三",
"男", 175.0f, "篮(4, 2)
model.setHorizontalHeaderLabels(['Name', 'Age'])
view = QTableView()
view.setModel(model)
# 设置信号球", "本科生", 5000.0f, 90.0f};
sm.addStudent(s1);
Student-槽连接
view.clicked.connect(lambda index: print(model.data(index, Qt.DisplayRole)))
# 设置数据
model.setData(model.index(0 s2 = {"计算机学院", "计算机科学与技术", "2019级2班", "201, 0), 'Alice')
model.setData(model.index(0, 1), '25')
model.setData(model.index(1, 0), 'Bob')
model.setData(model.index(1, 1), '30')
view.show()
app.exec_()
```
在这个示90102", "李四",
"女", 165.0f, "足球", "本科生", 6000例中,我们创建了一个4行2列的数据模型,并将其设置为TableView的模型。我们设置了一个.0f, 85.0f};
sm.addStudent(s2);
// 按照不同条件查询学生信息
信号-槽连接,当用户在TableView上单击单元格时,将触发一个槽函数并打印出该 vector<Student> res1 = sm.queryByCollege("计算机学院");
for (auto& s : res1) {
单元格的数据。最后,我们设置了一些示例数据并显示TableView。
当用户在TableView上编辑单元 cout << s.name << " " << s.major << " " << s.clazz << endl;
}
vector<Student> res2格时,槽函数将被触发,并使用data()方法获取用户编辑后的数据。你可以修改槽函数来执行任 = sm.queryByHobby("篮球");
for (auto& s : res2) {
cout << s.name << " "何你需要的操作,例如将数据保存到数据库中。