当前位置: 首页 > article >正文

qt QStandardItem详解

1、概述

QStandardItem是Qt框架中QStandardItemModel的一个基础元素,用于在基于项的模型(如QStandardItemModel)中表示单个数据项。QStandardItem可以存储文本、图标、工具提示等丰富的信息,并且支持数据的编辑和自定义显示。通过组织多个QStandardItem,可以构建出复杂的数据结构,如表格或树形结构,这些结构可以通过QTableView、QTreeView等视图控件进行展示。

QStandardItem的一个关键特性是它可以包含子项,从而形成一个层次结构。这使得QStandardItem不仅适用于平面表格数据,还适用于需要表示层次关系的数据,如文件系统、组织结构等。

2、重要方法

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

  • setText(const QString &text):设置项的文本内容。
  • text() const:返回项的文本内容。
  • setIcon(const QIcon &icon):设置项的图标。
  • icon() const:返回项的图标。
  • setToolTip(const QString &toolTip):设置项的工具提示。
  • toolTip() const:返回项的工具提示。
  • setCheckable(bool checkable):设置项是否可以被选中(打勾)。
  • isCheckable() const:检查项是否可以被选中。
  • setCheckState(Qt::CheckState state):设置项的选中状态(Qt::Unchecked、Qt::PartiallyChecked、Qt::Checked)。
  • checkState() const:返回项的选中状态。
  • setEditable(bool editable):设置项是否可编辑。
  • isEditable() const:检查项是否可编辑。
  • appendRow(const QList<QStandardItem *> &items = QList<QStandardItem *>()):向项的子项列表中添加一行。
  • insertRow(int row, const QList<QStandardItem *> &items = QList<QStandardItem *>()):在指定位置向项的子项列表中插入一行。
  • removeRow(int row):从项的子项列表中移除指定行。
  • rowCount() const:返回项的子项行数。
  • columnCount() const:返回项的子项列数(对于顶层项,这通常没有意义,因为顶层项不包含列信息,而是行信息,但子项可以有列)。

3、重要信号

QStandardItem类本身并不直接发射信号,但它作为QStandardItemModel中数据项的代表,当模型中的数据发生变化时(如项的文本、选中状态、子项等被修改),QStandardItemModel会发射相应的信号。这些信号包括:

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

注意:这些信号是由QStandardItemModel发射的,而不是QStandardItem本身。QStandardItem主要作为数据容器,而信号和槽机制则用于在模型层面上通知视图或其他监听器关于数据的变化。

#include <QApplication>  
#include <QTableView>  
#include <QStandardItemModel>  
#include <QStandardItem>  
  
int main(int argc, char *argv[]) {  
    QApplication app(argc, argv);  
  
    // 创建QTableView对象  
    QTableView tableView;  
  
    // 创建QStandardItemModel对象  
    QStandardItemModel model;  
    model.setHorizontalHeaderLabels(QStringList() << "Name" << "Age" << "Gender");  
  
    // 创建QStandardItem项并添加到模型中  
    QList<QStandardItem *> row1;  
    row1.append(new QStandardItem("Alice"));  
    row1.append(new QStandardItem("30"));  
    row1.append(new QStandardItem("Female"));  
    model.appendRow(row1);  
  
    QList<QStandardItem *> row2;  
    row2.append(new QStandardItem("Bob"));  
    row2.append(new QStandardItem("25"));  
    row2.append(new QStandardItem("Male"));  
    model.appendRow(row2);  
  
    // 将模型设置给QTableView  
    tableView.setModel(&model);  
  
    // 显示QTableView  
    tableView.show();  
  
    return app.exec();  
}

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

           


http://www.kler.cn/a/381719.html

相关文章:

  • CSS的配色
  • QT5串口多线程--派生类加moveToThread
  • 初识数据结构(什么是数据结构、算法,数据结构的重要性,算法的重要性)
  • ArkUI常用布局:构建响应式和高效的用户界面
  • CSS画icon图标系列(一)
  • 大模型的提示学习
  • 秒杀系统的设计与压测
  • 京东零售推荐系统可解释能力详解
  • PCA9632笔记
  • Java中查找与排序算法探究
  • WPF+MVVM案例实战(十九)- 自定义字体图标按钮的封装与实现(EF类)
  • rabbitMQ RabbitTemplate 发送消息
  • Genmoai-smol:专为单 GPU 优化的开源 AI 视频生成模型,低显存生成高质量视频
  • 页面上的内容的生成图片后,保存为word,并下载
  • 【数据结构篇】探索堆的算法的巧妙
  • Mysql在oracle的安装与配置(怕忘)
  • qt QInputDialog详解
  • RabbitMQ高级特性
  • 产品经理笔记
  • Android无限层扩展多级recyclerview列表+实时搜索弹窗
  • 双token无感刷新nodejs+vue3(保姆级教程)
  • 【Eclipse系列】Eclipse版本与jdk对应版本
  • MySQL 安装与配置
  • 大数据-204 数据挖掘 机器学习理论 - 混淆矩阵 sklearn 决策树算法评价
  • 如何用pycharm连接sagemath?
  • FPGA跨时钟域处理方法