Qt5.15 C++ QStandardItemModel 使用详细介绍
时间: 2024-11-29 10:37:45 浏览: 9
Qt5.15中的QStandardItemModel是一个内置的数据模型类,用于管理和展示表格数据。它支持树形结构,常用于构建如QTableView、QListView等控件的数据源。以下是QStandardItemModel的一些关键功能和使用步骤:
1. **创建模型**: 首先,你需要实例化QStandardItemModel。例如:
```cpp
QStandardItemModel *model = new QStandardItemModel(parent);
```
`parent`通常是窗口或布局对象。
2. **添加项**: 可以通过索引来添加行(item)或列(column):
```cpp
QStandardItem item("Item Name");
model->setItem(0, 0, item); // 添加到第一行第一列
```
也可以一次性添加整个列表:
```cpp
QList<QStandardItem*> items;
items << new QStandardItem("Item 1") << new QStandardItem("Item 2");
model->insertRows(0, items.count(), QModelIndex()); // 插入从0开始的指定行数
```
3. **设置数据**: 使用`setData()`方法设置特定项的数据:
```cpp
model->setData(model->item(0, 0), "New Data");
```
4. **获取数据**: `data()`方法用于获取项的数据,可以指定槽位(role):
```cpp
QString data = model->data(model->index(0, 0), Qt::DisplayRole).toString();
```
5. **遍历模型**: 使用`rows()`、`columns()`、`index()`方法遍历模型,访问每一项:
```cpp
for (int row = 0; row < model->rowCount(); ++row) {
for (int col = 0; col < model->columnCount(); ++col) {
qDebug() << model->item(row, col)->text();
}
}
```
6. **事件处理**: 当模型发生改变时(比如添加、删除项),可以连接信号`rowsInserted()`、`rowsRemoved()`等来响应。
**相关问题--:**
1. QStandardItemModel如何实现数据绑定到UI控件?
2. 如何实现自定义的排序和过滤功能?
3. 如何处理模型的拖放操作?
阅读全文