Qt中QTableView应用
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应用相关推荐
- (二)Qt中QTableView中加入Check列实现
QTableView中嵌入复选框CheckBox 第二种方法:设置QAbstractTableModel的flags()函数法 通过Delegate创建QCheckBox来实现的Chec ...
- QT中QTableView 点击表头进行排序
今日,由于工作需要,要实现在QTableView中点击表头进行排序的功能,但QTableView中并未提供此功能,经过苦苦的网络搜索也为发现可用的代码.最后经过跟踪QTableWidget的排序功能实 ...
- qt中Qtableview的用法
QTableView常用于实现数据的表格显示.下面我们如何按步骤实现学生信息表格: 一 添加表头 //准备数据模型 QStandardItemModel *student_model = ne ...
- 【Qt】QTableView中嵌入复选框CheckBox 的四种方法总结
搜索了一下,QTableView中嵌入复选框CheckBox方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四 ...
- qt qtableview mysql_Qt数据库编程中QTableView使用方法
Qt 数据库编程中QTableView使用方法是本文要介绍的内容,主要是来学习QT中数据库关于QTableView的使用,具体来看本文详解. QTableView是QT中用来把数据集以表格形式提供给用 ...
- Qt中的自定义模型类
文章目录 1 Qt中的通用模型类 1.1 Qt中的通用模型类 1.2 Qt中的变体类型QVariant 2 自定义模型类 2.1 自定义模型类设计分析 2.2 自定义模型类数据层.数据表示层.数据组织 ...
- Qt中的模型视图设计模式
文章目录 1 初探Qt中的模型视图设计模式 2 模型视图中的索引 3 模型中的数据组织方式初探 1 初探Qt中的模型视图设计模式 模型视图设计模式的核心思想: 模型(数据)与视图(显示)相分离. 模型 ...
- qt中数据库操作总结
#include <QtSql> QT += sql QSqlDatabase类实现了数据库连接的操作 QSqlQuery类用来执行SQL语句 QSqlRecord类 封装数据库所有记录 ...
- Qt:QTableView(01) 的用法
Qt:QTableView(01) 的用法 文章目录 Qt:QTableView(01) 的用法 前言 一 .给 QTableView 添加表头 二.设置表格属性 1. 设置 QTableView 内 ...
- Qt之QTableView的使用
QTableView类实现表格视图,QTableView的数据由继承QAbstractItemModel的子类models来提供. 1.使得QTableView的大小和主窗口大小一致 //获得主窗口的 ...
最新文章
- Java日志体系总结
- 云原生时代,Java还是Go?
- 震惊!html文件注释也会影响运行代码!(werkzeug.routing.BuildError: Could not build url for endpoint)莫名其妙
- django07: 模板语言(旧笔记)
- Java中ArrayList的使用
- security面试_41 道 Spring Boot 面试题,帮你整理好了!
- [CTO札记]给新助理的3句话
- C语言求素数的几种方法
- vscode统计代码行数
- 2022研究生数学建模ABCDEF思路
- 使用Python获取100以内的质数
- HDU6184 Counting Stars(三元环计数)
- Git工具的基本使用(一)
- java查找文件路径_如何查找java路径?
- 如何选择阿里云服务器
- Java从键盘上输入一个正整数n,然后计算1+2+...+n的结果并输出
- android 播放wav代码,播放简短的.wav文件 - Android
- [JSON] JSON基础知识
- linux中使用命令启动tomcat后显示tomcat started,实际却没启动的问题
- VB超级模块函数:VB读写记事本-防止乱码支持UTF-8和GB2312编码