标题:Qt开源作品19-通用数据库翻页查询
作者:liudianwu
日期:2020-05-25 08:54
内容:
## 一、前言
在Qt与数据库结合编程的过程中,记录一多,基本上都需要用到翻页查看记录,翻页有个好处就是可以减轻显示数据的表格的压力,不需要一次性将数据库表的记录全部显示,也基本上没有谁在一页上需要一次性显示所有记录,搜索引擎搜索出来的结果也基本上都是翻页显示的,那么问题来了,有没有一种通用的办法可以只需要传入表名和查询条件自动翻页呢,答案是肯定的,Qt对数据库操作的封装也是相当完美的,显示也是如此,为此特意封装成了一个类,直接用就行。
**主要功能:**
1. 自动按照设定的每页多少行数据分页
2. 只需要传入表名/字段集合/每页行数/翻页指示按钮/文字指示标签
3. 提供公共静态方法绑定字段数据到下拉框
4. 建议条件字段用数字类型的主键,速度极快
5. 增加线程查询符合条件的记录总数,数据量巨大时候不会卡主界面
6. 提供查询结果返回信号,包括当前页/总页数/总记录数/查询用时
7. 可设置所有列或者某一列对齐样式例如居中或者右对齐
8. 可设置增加一列,列的位置,标题,宽度
9. 可设置要查询的字段集合
## 二、代码思路
```c++
void DbPage::bindData(const QString &sql)
{
queryModel->setQuery(sql, QSqlDatabase::database(connName));
tableView->setModel(queryModel);
//依次设置列标题列宽
int columnCount = tableView->model()->columnCount();
int nameCount = columnNames.count();
columnCount = columnCount > nameCount ? nameCount : columnCount;
QList columnNames = this->columnNames;
QList columnWidths = this->columnWidths;
//根据设置添加新列,将对应新列的标题名称和宽度按照索引位置插
if (insertColumnIndex >= 0) {
columnCount++;
columnNames.insert(insertColumnIndex, insertColumnName);
columnWidths.insert(insertColumnIndex, insertColumnWidth);
queryMod ..
#1 [九重水 05-25 09:02]
你是不是想做培训?
#2 [我要买奔驰 06-19 14:04]
武哥,问您一个问题。就像这种,QTableView显示的一栏,如果超范围了,应该如何设置,让它能够自动换行,而整个表也能跟着自动换行?
例如您图片,第一行“日志类型”中第一行,“用户操作”,如果里面填写“用户操作用户操作”,那么表格自动适应换行?
#3 [miaxislink 07-12 15:07]
看看前辈们的作品,学习依一下
#4 回 九重水 的帖子 [飞翔梦幻 02-04 13:45]
九重水:你是不是想做培训? (2020-05-25 09:02)
整天发一些 没有源码开源的东西,估计是想开培训班