qt QStandardItemModel详解

news/2024/11/7 21:00:00/
 1、概述

QStandardItemModel是Qt框架中提供的一个基于项的模型类,用于存储和管理数据,这些数据可以以表格的形式展示在视图控件(如QTableView、QTreeView等)中。QStandardItemModel支持丰富的数据操作,包括添加、删除、移动和查找项,以及设置项的显示和编辑属性。它广泛用于需要动态数据管理的应用程序中,如文件浏览器、邮件客户端的地址簿等。

QStandardItemModel中的每一项都是一个QStandardItem对象,这些对象可以包含文本、图标、工具提示等丰富的信息。通过组织这些项,QStandardItemModel可以构建出复杂的数据结构,如树形结构或表格结构。

2、重要方法

QStandardItemModel类提供了多种方法来操作和管理数据项,以下是一些重要的方法:

  • rowCount(const QModelIndex &parent = QModelIndex()) const:返回指定父项下的行数。
  • columnCount(const QModelIndex &parent = QModelIndex()) const:返回指定父项下的列数。
  • setItem(int row, int column, QStandardItem *item):在指定位置设置项。
  • item(int row, int column) const:返回指定位置的项。
  • takeItem(int row, int column):移除并返回指定位置的项。
  • appendRow(const QList<QStandardItem *> &items = QList<QStandardItem *>()):在模型末尾添加一行。
  • insertRow(int row, const QList<QStandardItem *> &items = QList<QStandardItem *>()):在指定位置插入一行。
  • removeRow(int row):移除指定行。
  • setHorizontalHeaderLabels(const QStringList &labels):设置水平表头的标签。
  • setVerticalHeaderLabels(const QStringList &labels):设置垂直表头的标签。
  • indexFromItem(const QStandardItem *item) const:返回给定项的索引。
  • itemFromIndex(const QModelIndex &index) const:返回给定索引的项。
3、重要信号

QStandardItemModel类也提供了多个信号,以便在模型数据发生变化时进行通知。以下是一些重要的信号:

  • itemChanged(QStandardItem *item):当项的数据发生变化时发射此信号。
  • rowsInserted(const QModelIndex &parent, int start, int end):当在指定父项下插入行时发射此信号。
  • rowsRemoved(const QModelIndex &parent, int start, int end):当从指定父项下移除行时发射此信号。
  • layoutChanged():当模型的布局发生变化时发射此信号,例如添加、删除或移动项。
  • modelReset():当模型被重置时发射此信号,即模型中的所有数据都被清除。

4、重要角色和标志
以下是QStandardltemModel类中一些常见的角色和标志及其简要介绍:
角色(Role)

  • Qt::DisplayRole:用于显示的数据。
  • Qt::EditRole:用于编辑的数据。
  • Qt::ToolTipRole:用于显示工具提示的数据。
  • Qt::DecorationRole:用于显示装饰图标的数据。
  • Qt::CheckstateRole:用于显示复选框状态的数据。

标志(Flags)

  • Qt::ItemIsSelectable:项是可选中的。
  • Qt::ItemIsEditable:项是可编辑的。
  • Qt::ItemIsEnabled:项是启用的。
  • 0Qtt::ItemIsUsercheckable:项是用户可复选的。
#include <QApplication>  
#include <QTableView>  
#include <QStandardItemModel>  
#include <QStandardItem>  int main(int argc, char *argv[]) {  QApplication app(argc, argv);  // 创建QTableView对象  QTableView tableView;  // 创建QStandardItemModel对象  QStandardItemModel model(4, 3); // 4行3列  model.setHorizontalHeaderLabels(QStringList() << "Column 1" << "Column 2" << "Column 3");  // 填充数据  for (int row = 0; row < 4; ++row) {  for (int column = 0; column < 3; ++column) {  QStandardItem *item = new QStandardItem(QString("Item %1,%2").arg(row).arg(column));  model.setItem(row, column, item);  }  }  // 将模型设置给QTableView  tableView.setModel(&model);  // 显示QTableView  tableView.show();  return app.exec();  
}

觉得有帮助的话,打赏一下呗。。

           


http://www.ppmy.cn/news/1545167.html

相关文章

Linux-socket详解

Linux-socket详解_socket linux-CSDN博客

智能编码企业级方案与实践

大家好&#xff0c;我是袁庭新。今天分享一篇关于企业如何高效落地研发智能化的过程的相关内容。 作为未来的软件开发工程师&#xff0c;我们不光要学习这些先进的AIGC生产力工具&#xff0c;还得深入了解企业里智能编程的那些实际做法和应用情况。只有这样&#xff0c;咱们才…

群晖NAS本地部署Cloud Sync结合内网穿透远程上传文件并云同步至网盘

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

如何将现有VUE项目所有包更新到最新稳定版

更新有风险,Enter要谨慎!!! 要将项目中的所有 npm 包更新到最新稳定版&#xff0c;可以使用 npm-check-updates 工具。以下是具体步骤&#xff1a; 步骤一&#xff1a;安装 npm-check-updates 首先&#xff0c;全局安装 npm-check-updates 工具&#xff1a; npm install -g…

解决SRS推送webrtc流卡顿问题

目录 1.问题描述2.原因分析3.ffmpeg去掉B帧的方法3.1 命令行推流3.2 ffmpeg源码推流 1.问题描述 使用ffmpeg通过rtmp协议推流给SRS&#xff0c;然后浏览器通过webrtc拉取播放流&#xff0c;经多次测试发现webrtc播放流总是卡顿&#xff0c;而拉取rtmp流是正常的。 2.原因分析…

【论文精读】LPT: Long-tailed prompt tuning for image classification

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;论文精读_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 摘要 2. …

Python Matplotlib:基本图表绘制指南

Python Matplotlib&#xff1a;基本图表绘制指南 Matplotlib 是 Python 中一个非常流行的绘图库&#xff0c;它以简单易用和功能丰富而闻名&#xff0c;适合各种场景的数据可视化需求。在数据分析和数据科学领域&#xff0c;Matplotlib 是我们展示数据的有力工具。本文将详细讲…

半监督基本概念

预备知识 硬标签&软标签 硬:只表示某个数据点属于哪个类别,不包含其他概率信息 软:通常表示为一个数据点属于每个类别的概率 伪标签低检出问题: 在半监督学习中,经常利用模型自身的预测结果(通常为高置信度的预测)生成伪标签,然后用这些伪标签作为目标来继续训…