【Qt】QStandardItemModel用法

embedded/2024/12/28 17:55:37/

QStandardItemModel 是 Qt 框架中一个非常强大的模型类,用于管理自定义的数据结构。它基于 QAbstractItemModel 类,并提供了可变的、分层的数据存储方式。以下是一些常见的用法示例和说明。

1. 创建和初始化 QStandardItemModel

首先,你需要创建一个 QStandardItemModel 的实例:

#include <QApplication>
#include <QStandardItemModel>
#include <QTableView>int main(int argc, char *argv[])
{QApplication a(argc, argv);QStandardItemModel model(4, 2); // 创建一个4行2列的模型return a.exec();
}

2. 设置数据

你可以使用 setItemappendRow 方法来设置和添加数据。

使用 setItem
QStandardItem *item1 = new QStandardItem("Item 1");
QStandardItem *item2 = new QStandardItem("Item 2");model.setItem(0, 0, item1);
model.setItem(0, 1, item2);
使用 appendRow
QList<QStandardItem*> rowItems;
rowItems.append(new QStandardItem("Row 1 Col 1"));
rowItems.append(new QStandardItem("Row 1 Col 2"));model.appendRow(rowItems);

3. 获取数据

你可以使用 item 方法来获取特定位置的 QStandardItem 对象,然后通过该对象获取其数据:

QStandardItem *item = model.item(0, 0);
if (item) {qDebug() << "Item at (0,0):" << item->text();
}

4. 连接视图

你可以将 QStandardItemModel 连接到一个视图(如 QTableViewQTreeView)来显示数据。

#include <QTableView>int main(int argc, char *argv[])
{QApplication a(argc, argv);QStandardItemModel model(4, 2);// 设置一些数据for (int row = 0; row < 4; ++row) {for (int column = 0; column < 2; ++column) {QString text = QString("Item %1-%2").arg(row + 1).arg(column + 1);model.setItem(row, column, new QStandardItem(text));}}// 创建一个视图QTableView tableView;tableView.setModel(&model);// 显示视图tableView.show();return a.exec();
}

5. 处理层次结构

QStandardItemModel 支持分层数据结构,你可以将项嵌套在其他项之下。

QStandardItem *parentItem = model.invisibleRootItem(); // 获取根项// 创建一些子项
QStandardItem *childItem1 = new QStandardItem("Child 1");
QStandardItem *childItem2 = new QStandardItem("Child 2");// 将子项添加到父项中
parentItem->appendRow(childItem1);
parentItem->appendRow(childItem2);// 再创建一些孙项
QStandardItem *grandChildItem1 = new QStandardItem("Grand Child 1");
childItem1->appendRow(grandChildItem1);

6. 连接到 QTreeView

如果你希望显示分层数据结构,可以使用 QTreeView

#include <QTreeView>int main(int argc, char *argv[])
{QApplication a(argc, argv);QStandardItemModel model;// 创建一些项并嵌套QStandardItem *parentItem = new QStandardItem("Parent");model.appendRow(parentItem);QStandardItem *childItem1 = new QStandardItem("Child 1");parentItem->appendRow(childItem1);QStandardItem *grandChildItem1 = new QStandardItem("Grand Child 1");childItem1->appendRow(grandChildItem1);// 创建一个视图QTreeView treeView;treeView.setModel(&model);// 显示视图treeView.show();return a.exec();
}

总结

QStandardItemModel 提供了一个灵活且强大的方式来管理和显示结构化数据。你可以通过 setItemappendRow 等方法设置和添加数据,并使用视图(如 QTableViewQTreeView)来展示这些数据。希望这些示例能帮助你更好地理解和使用 QStandardItemModel


http://www.ppmy.cn/embedded/149515.html

相关文章

抖音视频下载去水印工具推荐

下载抖音视频并去水印的工具有很多&#xff0c;下面推荐几种常用且有效的方法。请注意&#xff0c;下载和去水印的视频需遵守版权和平台规定&#xff0c;避免侵犯原创者权益。 在线工具 这些工具无需安装&#xff0c;可以直接在浏览器中使用&#xff0c;操作简单&#xff1a;…

np.triu:NumPy中提取上三角矩阵的利器

在科学计算和数据分析中&#xff0c;矩阵操作是一项基本且常见的任务。NumPy&#xff0c;作为Python中用于数值计算的核心库&#xff0c;提供了大量处理矩阵的函数。其中&#xff0c;np.triu函数专门用于提取矩阵的上三角部分&#xff0c;这对于特定的数学运算和条件检查非常有…

机床数据采集网关在某机械制造企业的应用

随着工业4.0时代的到来&#xff0c;智能制造已成为制造业转型升级的重要方向。数控机床作为现代制造业的核心设备&#xff0c;其运行状态和加工参数的数据实时采集与分析对于提升生产效率、优化生产流程具有关键意义。 背景概述 某机械制造企业拥有多台数控机床&#xff0c;这…

依图科技简介

依图科技&#xff08;YITU Technology&#xff09;是中国一家全球领先的人工智能&#xff08;AI&#xff09;公司&#xff0c;成立于2012年&#xff0c;总部位于上海。公司专注于计算机视觉、语音识别和自然语言处理等核心AI技术&#xff0c;致力于推动AI技术在医疗、安防、金融…

Github 2024-12-27 Java开源项目日报Top10

根据Github Trendings的统计,今日(2024-12-27统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9Kotlin项目1C#项目1非开发语言项目1C++项目1《Hello 算法》:动画图解、一键运行的数据结构与算法教程 创建周期:476 天协议类型:Ot…

Docker中的MYSQL导入本地SQL语句

在本地mysql安装的bin目录下打开cmd窗口并执行以下命令导出sql文件 mysqldump -uroot -p mysql >schema.sql mysql -数据库 schema.sql -导出的SQL语句文件名 使用xftp上传文件到centos7中的某个文件夹中 使用docker cp schema.sql mysql:.(有一个点&#xff09;上传到mys…

Word窗体联动Excel实现级联组合框

在Word中的使用用户窗体&#xff08;UserForm&#xff09;定制界面如下图所示&#xff0c;其中控件如下&#xff08;忽略Label控件&#xff09;&#xff1a; CompanyName 组合框Attention 组合框CommandButton1 按钮 现在需要实现级联组合框效果&#xff0c;即用户在 CompanyN…

Rocky DEM tutorial7_Conical Dryer_锥形干燥器

tutorial 7_Conical Dryer_锥形干燥器 文章目录 tutorial 7_Conical Dryer_锥形干燥器0. 目的1. 模型介绍2. 模型设置2.1设置physics2.2 导入几何2.3 设置motion2.4 Boundary边界设置2.5 设置材料2.6设置材料间相互作用2.7 创建粒子2.8 设置颗粒进口2.9 求解器设置3. 后处理Enj…