初学Qt——QTableView+QSqlqueryModel
我们在显示报表时可以用到上面两个类来实现,QTableView负责对视图显示;QSqlqueryModel则负责数据模块。
这里数据查询使用QSqlqueryModel主要是这个类可以通过自己写的查询语句来获得数据模型。
本文不对整个的流程作详细讲述,对本人在开发过程中遇到的一些点进行阐述
获得数据模型
QSqlQueryModel *Model = new QSqlQueryModel;
QString selectfromtable = "查询语句";
Model->setQuery(selectfromtable);
对表头名称进行修改,这里使用QString::fromLocal8Bit()是用于解决中文乱码问题的
Model->setHeaderData(0,Qt::Horizontal,QString::fromLocal8Bit("姓名"));
Model->setHeaderData(1,Qt::Horizontal,QString::fromLocal8Bit("证件号码"));
Model->setHeaderData(2,Qt::Horizontal,QString::fromLocal8Bit("性别"));
Model->setHeaderData(3,Qt::Horizontal,QString::fromLocal8Bit("配偶姓名"));
Model->setHeaderData(4,Qt::Horizontal,QString::fromLocal8Bit("子女数"));
Model->setHeaderData(5,Qt::Horizontal,QString::fromLocal8Bit("户籍地"));
Model->setHeaderData(6,Qt::Horizontal,QString::fromLocal8Bit("现居地"));
Model->setHeaderData(7,Qt::Horizontal,QString::fromLocal8Bit("出生日期"));
Model->setHeaderData(8,Qt::Horizontal,QString::fromLocal8Bit("婚姻状况"));
Model->setHeaderData(9,Qt::Horizontal,QString::fromLocal8Bit("是否标记离开"));
因为在对报表处理时,我们一般会在报表的每一列后面添加一些操作,这里在报表最后添加两列分别为编辑和删除
Model->insertColumn(10);//这里是在模型的第十列后面插入一列
Model->setHeaderData(10,Qt::Horizontal,QString::fromLocal8Bit("查看"));
Model->insertColumn(11);
Model->setHeaderData(11,Qt::Horizontal,QString::fromLocal8Bit("删除"));
将数据模型与TableView绑定,因为我们得到的数据是列的宽度是不一样的,但tableview默认是给一个固定宽度,这里我们使用resizeColumnsToContents()使列宽跟随内容改变。
使用resizeRowsToContents()则可使行高根据数据内容改变。
ui.tableVieW->setModel(Model);
ui.tableVieW->resizeColumnsToContents();
得到的效果如下图
可以看到最后面的两个按钮不是很理想,这时我们可以单独取出这两列对其列宽进行修改,只是修改按钮属性是不行的
代码如下
ui.tableVieW->setColumnWidth(10,50);
ui.tableVieW->setColumnWidth(11,50);
得到的效果如下
初学Qt——QTableView+QSqlqueryModel的更多相关文章
- Qt QTableView 表格内添加控件
目录 Qt QTableView 表格内添加控件 1. QItemDelegate 2. setIndexWidget 3. setIndexWidget + setLayout Qt QTableV ...
- QT QSqlQuery QSqlQueryModel
SQL执行操作 QSqlQuery提供了对数据库记录的Select.Insert.Update.Delete操作. SELECT操作: QSqlQuery query; query.exec(&q ...
- QT QTableView用法小结
QTableView常用于实现数据的表格显示.下面我们如何按步骤实现学生信息表格: 一 添加表头 //准备数据模型 QStandardItemModel *student_model = new QS ...
- Qt QtableView使用
ui->setupUi(this); ui->mainToolBar->hide(); tableView = new QTableView(this); // 设置表头 QStan ...
- 【转载】QT QTableView用法小结
原始日期: 2016-08-16 09:28 来源:http://blog.csdn.net/wang_lichun/article/details/7805253 QTableView常用于实现数据 ...
- 转载:QT QTableView用法小结
出自: http://blog.chinaunix.net/uid-20382483-id-3518513.html QTableView常用于实现数据的表格显示.下面我们如何按步骤实现学生信息表格: ...
- qt qtableview 样式设置
转载请注明出处:http://www.cnblogs.com/dachen408/p/7531159.html 1.设置tableview的列宽时,必须先setModel再setColumnWidge ...
- qt QTableView中嵌入复选框CheckBox 的四种方法总结
第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四种比较适合扩展,它除了可以嵌入复选框,还可以通过paint()绘制其它控件 ...
- Qt ------ QTableView QTableWidget
QTableView model提供数据 view提供视图 view用来显示model的数据 必须将model绑定到某个view中才能显示 QStandardItemModel* mod ...
随机推荐
- c语言中fflush的运用为什么没有效果呢,测试平台linux
/************************************************************************* > File Name: clearing. ...
- Java任务调度框架之分布式调度框架XXL-Job介绍
Java任务调度框架之分布式调度框架XXL-Job介绍及快速入门 调度器使用场景: Java开发中经常会使用到定时任务:比如每月1号凌晨生成上个月的账单.比如每天凌晨1点对上一天的数据进行对账操作 ...
- Java实现卖票程序(两种线程实现)
/** * 2019年8月8日16:05:05 * 目的:实现火车站卖票系统(第一种创建线程的方式) * @author 张涛 * */ //第一种方式直接继承Thread来创建线程 class T1 ...
- 基于邻接表的长度为k的简单路径的求解
描述 一个连通图采用邻接表作为存储结构.设计一个算法,判断无向图中任意给定的两点是否存在一条长度为k的简单路径. 输入 多组数据,每组m+3数据行.第一行有两个数字n,m和k,代表有n个顶点,m条边和 ...
- 记忆化dp博弈
题:http://poj.org/problem?id=2068 题意: 有两个队伍A,B,每个队伍有N个人,交叉坐.即是A(1,3,5,7.....)B(2,4,6,8....).告诉你每个mi(1 ...
- Xcode查看iOS崩溃与崩溃日志分析
一.造成崩溃的原因 1.代码中存在bug 2.Watchdog 超时机制 3.用户强制退出 4.低内存终止 5.其他违法系统规则的操作,大部分是内存问题 二.崩溃的类型 1.信号错误类 (1)EXC_ ...
- Fiddler发送post请求 出现503
- [LC] 105. Construct Binary Tree from Preorder and Inorder Traversal
Given preorder and inorder traversal of a tree, construct the binary tree. Note:You may assume that ...
- Differential Calculus
Taylor's Formula Theorem 1.1. Let \(f\): \(I=(c,d)->\mathbb{R}\) be a n-times differentiable func ...
- python语法基础-基础-赋值与深浅拷贝
##################################### 预备知识一——python的变量及其存储 在详细的了解python中赋值.copy和deepcopy之前,我们还是要花一点时 ...