QTableView是Qt中用来显示表格的视图控件,与之相似的还有QListView是以列表的形式进行显示的视图控件,QTreeView是树状显示的控件可以分多级进行显示。(在这里只介绍QTableView)

QTableView的使用需要结合QStandardItemModel和QStandardItem一起使用。QStandardItemModel使用来创建模型的,QStandardItem是用来在模型中创建对象的。QTableView和QStandardItemModel使用的是 视图/模型的框架,即模型使用来管理数据,视图是用来显示,当模型中的数据有变化的时候,会自动的更新在视图中显示。

        QTextCodec *m_gbkCodec = QTextCodec::codecForName("GBK");//设置字体QStandardItemModel *m_model = new QStandardItemModel;m_model->setColumnCount(6);   //设置表格列的数量/*设置表格的标题*/m_model->setHeaderData(0, Qt::Horizontal, m_gbkCodec->toUnicode("学号"));m_model->setHeaderData(1, Qt::Horizontal, m_gbkCodec->toUnicode("姓名"));m_model->setHeaderData(2, Qt::Horizontal, m_gbkCodec->toUnicode("性别"));m_model->setHeaderData(3, Qt::Horizontal, m_gbkCodec->toUnicode("年龄"));m_model->setHeaderData(4, Qt::Horizontal, m_gbkCodec->toUnicode("身高"));m_model->setHeaderData(5, Qt::Horizontal, m_gbkCodec->toUnicode("体重"));ui.m_tableView->setModel(m_model);//为视图设置模型

首先创建QStandardItemModel标准模型对象;使用setColumnCount()设置列的数量;通过setHeaderData()设置列的标题名字;最后为QTableView设置模型。效果如下图。

在没有设置标题格式的时候如上图所示,最后一格之后是空白的。通过setSectionResizeMode(QHeaderView::Stretch)设置标题列宽度自适应。默认情况下点击表格只能选中单个,而且双击后是可以编辑的。setEditTriggers()设置可编辑方式,setSelectionBehavior()设置选择模式,verticalHeader()->hide()可以隐藏掉垂直标题。

标题列的设置还可以设置某些列为固定宽度某些为自适应宽度。效果如下图

        ui.m_tableView->setColumnWidth(0, 60);//设置0列的宽度为60ui.m_tableView->setColumnWidth(1, 100);//设置1列的宽度为100ui.m_tableView->setColumnWidth(2, 80);//设置2列的宽度为80ui.m_tableView->setColumnWidth(3, 60);//设置3列的宽度为60ui.m_tableView->horizontalHeader()->setSectionResizeMode(4, QHeaderView::Stretch);//设置4列的宽度自适应ui.m_tableView->horizontalHeader()->setSectionResizeMode(5, QHeaderView::Stretch);//设置5列的宽度自适应

        ui.m_tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//设置标题自适应宽度ui.m_tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);   //内容不可编辑ui.m_tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //选择整行ui.m_tableView->verticalHeader()->hide();//隐藏垂直表头
        QStandardItem *item; //创建标准项指针for (int i = 0; i < 6; i++){m_model->insertRow(i);//在模型中插入行for (int j = 0; j < 6; j++){item = new QStandardItem();     //创建标准项对象item->setText(QString::number(j));  //设置标准项的内容m_model->setItem(i, j, item);      //在模型中设置标准项}}

通过循环为模型添加数据(注意每一个单元格都是一个QStandardItem);效果如下图。

可以通过m_model->rowCount()获取表格的行数。如果要更新表格的所用数据,可以通过m_model->clear(),但是这样清理会把表格设置的格式也清理掉;标题会恢复到默认的情况,设置的效果会丢失。可以选择使用m_model->removemRows(m_model->rowCount());这种清楚方式只会把数据行清除,并不会把表格设置的格式也给清除。

Qt中QTableView应用相关推荐

  1. (二)Qt中QTableView中加入Check列实现

    QTableView中嵌入复选框CheckBox        第二种方法:设置QAbstractTableModel的flags()函数法 通过Delegate创建QCheckBox来实现的Chec ...

  2. QT中QTableView 点击表头进行排序

    今日,由于工作需要,要实现在QTableView中点击表头进行排序的功能,但QTableView中并未提供此功能,经过苦苦的网络搜索也为发现可用的代码.最后经过跟踪QTableWidget的排序功能实 ...

  3. qt中Qtableview的用法

    QTableView常用于实现数据的表格显示.下面我们如何按步骤实现学生信息表格: 一 添加表头 //准备数据模型     QStandardItemModel *student_model = ne ...

  4. 【Qt】QTableView中嵌入复选框CheckBox 的四种方法总结

    搜索了一下,QTableView中嵌入复选框CheckBox方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四 ...

  5. qt qtableview mysql_Qt数据库编程中QTableView使用方法

    Qt 数据库编程中QTableView使用方法是本文要介绍的内容,主要是来学习QT中数据库关于QTableView的使用,具体来看本文详解. QTableView是QT中用来把数据集以表格形式提供给用 ...

  6. Qt中的自定义模型类

    文章目录 1 Qt中的通用模型类 1.1 Qt中的通用模型类 1.2 Qt中的变体类型QVariant 2 自定义模型类 2.1 自定义模型类设计分析 2.2 自定义模型类数据层.数据表示层.数据组织 ...

  7. Qt中的模型视图设计模式

    文章目录 1 初探Qt中的模型视图设计模式 2 模型视图中的索引 3 模型中的数据组织方式初探 1 初探Qt中的模型视图设计模式 模型视图设计模式的核心思想: 模型(数据)与视图(显示)相分离. 模型 ...

  8. qt中数据库操作总结

    #include <QtSql> QT += sql QSqlDatabase类实现了数据库连接的操作 QSqlQuery类用来执行SQL语句 QSqlRecord类 封装数据库所有记录 ...

  9. Qt:QTableView(01) 的用法

    Qt:QTableView(01) 的用法 文章目录 Qt:QTableView(01) 的用法 前言 一 .给 QTableView 添加表头 二.设置表格属性 1. 设置 QTableView 内 ...

  10. Qt之QTableView的使用

    QTableView类实现表格视图,QTableView的数据由继承QAbstractItemModel的子类models来提供. 1.使得QTableView的大小和主窗口大小一致 //获得主窗口的 ...

最新文章

  1. Java日志体系总结
  2. 云原生时代,Java还是Go?
  3. 震惊!html文件注释也会影响运行代码!(werkzeug.routing.BuildError: Could not build url for endpoint)莫名其妙
  4. django07: 模板语言(旧笔记)
  5. Java中ArrayList的使用
  6. security面试_41 道 Spring Boot 面试题,帮你整理好了!
  7. [CTO札记]给新助理的3句话
  8. C语言求素数的几种方法
  9. vscode统计代码行数
  10. 2022研究生数学建模ABCDEF思路
  11. 使用Python获取100以内的质数
  12. HDU6184 Counting Stars(三元环计数)
  13. Git工具的基本使用(一)
  14. java查找文件路径_如何查找java路径?
  15. 如何选择阿里云服务器
  16. Java从键盘上输入一个正整数n,然后计算1+2+...+n的结果并输出
  17. android 播放wav代码,播放简短的.wav文件 - Android
  18. [JSON] JSON基础知识
  19. linux中使用命令启动tomcat后显示tomcat started,实际却没启动的问题
  20. VB超级模块函数:VB读写记事本-防止乱码支持UTF-8和GB2312编码

热门文章

  1. 笔记本 续航测试软件,续航能力测试
  2. Socket通讯之UDP
  3. 包含资金约束的多阶段报童模型
  4. Linux下安装海康威视工业相机客户端
  5. 题目 1842: 对局匹配
  6. 《Spring5官方文档》新功能
  7. dpkg安装软件流程_Linux下安装软件的一般步骤
  8. XMLSpy的主要功能介绍
  9. 酉矩阵(幺正矩阵、unitary matrix)
  10. 永洪BI-通过传输参数控制页面显示多少数据量