我们在显示报表时可以用到上面两个类来实现,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的更多相关文章

  1. Qt QTableView 表格内添加控件

    目录 Qt QTableView 表格内添加控件 1. QItemDelegate 2. setIndexWidget 3. setIndexWidget + setLayout Qt QTableV ...

  2. QT QSqlQuery QSqlQueryModel

      SQL执行操作 QSqlQuery提供了对数据库记录的Select.Insert.Update.Delete操作. SELECT操作: QSqlQuery query; query.exec(&q ...

  3. QT QTableView用法小结

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

  4. Qt QtableView使用

    ui->setupUi(this); ui->mainToolBar->hide(); tableView = new QTableView(this); // 设置表头 QStan ...

  5. 【转载】QT QTableView用法小结

    原始日期: 2016-08-16 09:28 来源:http://blog.csdn.net/wang_lichun/article/details/7805253 QTableView常用于实现数据 ...

  6. 转载:QT QTableView用法小结

    出自: http://blog.chinaunix.net/uid-20382483-id-3518513.html QTableView常用于实现数据的表格显示.下面我们如何按步骤实现学生信息表格: ...

  7. qt qtableview 样式设置

    转载请注明出处:http://www.cnblogs.com/dachen408/p/7531159.html 1.设置tableview的列宽时,必须先setModel再setColumnWidge ...

  8. qt QTableView中嵌入复选框CheckBox 的四种方法总结

    第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四种比较适合扩展,它除了可以嵌入复选框,还可以通过paint()绘制其它控件 ...

  9. Qt ------ QTableView QTableWidget

    QTableView model提供数据    view提供视图   view用来显示model的数据   必须将model绑定到某个view中才能显示 QStandardItemModel* mod ...

随机推荐

  1. [GX/GZOI2019]宝牌一大堆(DP)

    出这种麻将题有意思吗? 乍看很难实则很水,就是麻将式DP,想必大家很熟悉了吧.首先把“国士无双”和“七对子”两种牌型判掉,然后观察牌胡的形式,发现每多一张牌实际上就是把1个面子变成1个杠子,然后可以直 ...

  2. Navicat for MySQL远程连接报10038的错误

    #################################################### """ 1.网络检测 1)ping主机可以: 2)telnet ...

  3. 向通用自动驾驶部门Cruise投资22.5亿美元,软银打得什么主意?

    5月29日,加利福尼亚州的一辆特斯拉Model S撞上停在路边的警车.据透露,当时这辆特斯拉正处于自动辅助驾驶即Autopilot模式.而在今年,这已经不是第一次特斯拉自动驾驶模式出问题了.此外,Ub ...

  4. 关于mysql的符合主键的定义和解释

    DROP TABLE IF EXISTS `v9_vote_data`;CREATE TABLE `v9_vote_data` (  `userid` mediumint(8) unsigned DE ...

  5. python语法基础-常用模块-长期维护

    ###############      常用模块   ################ # 常用模块: # 1,collections模块 # 2,时间模块,time模块,datatime模块 # ...

  6. peculiar|retreated|civilize|conceivable

    ADJ-GRADED 奇怪的:古怪的:不寻常的If you describe someone or something as peculiar, you think that they are str ...

  7. 框架之MyBatis

    什么是框架,简单的来说框架就是一个程序的半成品,而我们就是的工作就是根据我们的工作需要将其完善.MyBatis框架的作用就是将我们使用JDBC操作数据库的过程移交给MyBatis,让它来帮我们完成这些 ...

  8. 浅谈URL重定向

    转载:https://blog.csdn.net/kiyoometal/article/details/90698761 重定向原理 HTTP 协议的重定向响应的状态码为 3xx .浏览器在接收到重定 ...

  9. rsync参数详解

    Rsync的参数详细解释 -v, --verbose 详细模式输出-q, --quiet 精简输出模式-c, --checksum 打开校验开关,强制对文件传输进行校验-a, --archive 归档 ...

  10. ionic2踩坑之ionic resources失败

    网上关于ionic2怎么修改应用图标和启动画面资料也挺多的.不过大家执行ionic resources的时候不少人都执行失败了,关于执行失败的原因网上很少.下面分享一下我的经验吧. 1.看自己的项目下 ...