初学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 ...
随机推荐
- android searchview 简单使用
设置样式 drawable bg_search/xml android:background="@drawable/bg_search" <shape xmlns:andro ...
- Springboot中RestTemplate -- 用更优雅的方式发HTTP请求
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率. 我之前的HTTP开发是用ap ...
- Python文件基本操作及上下文管理
文件基本操作 打开文件:f = open(fole_name,mode = 'r'),传入表示文件路径的字符串,会返回一个文件对象,mode是文件打开模式. 关闭文件:f.close(),调用给定文件 ...
- 892A. Greed#贪婪(优先队列priority_queue)
题目出处:http://codeforces.com/problemset/problem/892/A 题目大意:有一些可乐(不一定装满),问能不能把所有可乐装进两个可乐瓶中 #include< ...
- DataSet,DataTable排序(转载)
DataSet,DataTable排序 关于对已经绑定的DataSet的排序的问题: DataSet ds=new DataSet();DataView dv=new DataView();dv. ...
- Netty之内存泄露
直接内存是IO框架的绝配,但直接内存的分配销毁不易,所以使用内存池能大幅提高性能. 1.为什么要有引用计数器 Netty里四种主力的ByteBuf,其中UnpooledHeapByteBuf底下的by ...
- oracle中null的理解
< EXAMNO STUNO WRITTENEXAM LABEXAM e2014070001 s25301 80 58 e2014070002 s25302 50 e2014070003 s ...
- mysql 子查询不支持limit
mysql执行如下语句 : SELECT * FROM `xxx_base_info` where yn =1 and xxx_keeper_id in (SELECT id FROM `user`w ...
- python取出前端传入execl文件中的数据
from openpyxl import load_workbook #获取前台传入的文件 uploadedFile = request.FILES.get('file') #获取execl文件 wb ...
- php测试使用小的mysql存储过程
<?php //前提是php.ini里面要开通mysqli的扩展./*$link = mysqli_connect('localhost','root','','chinatupai'); $ ...