QT sql查询模型,视图显示

3 篇文章 0 订阅

定义

SQL 查询模型(QSqlQueryModel)是 Qt 提供的一种数据模型,用于执行 SQL 查询并返回结果集。它继承自
QSqlTableModel 类,可以使用 QSqlQuery 对象执行任意的 SQL
语句,并将查询结果封装成一个二维表格形式的数据模型,方便在 Qt 应用程序中进行展示和操作。

QSqlQueryModel 可以通过 setQuery() 函数设置要执行的 SQL 语句,并通过 setHeaderData()
函数设置表头信息。同时还提供了一些常用的函数,如 rowCount()、columnCount()、data()
等,可以方便地获取模型中的行数、列数和单元格数据等信息。

与其他 Qt 数据模型类似,QSqlQueryModel 也可以与视图控件(如 QTableView、QListView
等)进行绑定,从而实现查询结果的可视化展示。此外,还可以通过对 QSqlQueryModel 进行子类化来实现更复杂的功能需求。

定义sql查询模型

QSqlQueryModel *model= new QSqlQueryModel(this);

查询

model->setQuery("select * from student"); //之前定义的student表
  • student表
QSqlQuery query1;
    query1.exec("create table student (id int primary key, "
                "name varchar , course int)");
    query1.exec("insert into student values(0, '第一',11)");
    query1.exec("insert into student values(1, '第二',12)");
    query1.exec("insert into student values(2, '第三',13)");

设置格式

model->setHeaderData(0,Qt::Horizontal,tr("学号"));
model->setHeaderData(1,Qt::Horizontal,tr("姓名"));
model->setHeaderData(2,Qt::Horizontal,tr("课程"));

创建视图并显示

QTableView *view=new QTableView(this);  //creat
view->setModel(model); 		///将查询模型绑定到视图中
setCentralWidget(view);    ///在 central位置显示

setHeaderData() 函数

setHeaderData() 函数用于设置表头信息,其参数如下:

  • 第一个参数 column 表示要设置的列号,从 0 开始计数。

  • 第二个参数 orientation 表示表头的方向,可以是 Qt::Horizontal(水平方向)或 Qt::Vertical(垂直方向)。

  • 第三个参数 data 表示要设置的表头信息,可以是字符串、图标等任何类型的数据。

  • 第四个参数 role 表示要设置的数据角色,Qt 提供了很多内置的角色类型,比如 Qt::DisplayRole(显示文本)、Qt::DecorationRole(图标等装饰性数据)、Qt::ToolTipRole(提示信息)等。默认情况下使用 Qt::DisplayRole 角色。

setHeaderData(column,Qt::Horizontal or ,Qt::Vertical,tr("information"));// 常用 

其中最重要的是第一个和第三个参数,即要设置的列号和表头信息。

在这里插入图片描述

利用视图将sql查询信息输出到窗口中

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将 Qt SQL 数据封装成树,你需要完成以下步骤: 1. 从数据库中检索数据,将其存储在一个 Qt SQL 模型中。可以使用 QSqlQueryModel 或 QSqlTableModel 来完成这个步骤。 2. 为树节点创建一个数据结构。可以使用 QStandardItem 或自定义的数据结构。 3. 遍历 Qt SQL 模型中的数据,并将其添加到树中。可以使用 QStandardItemModel 或自定义的 QAbstractItemModel。 下面是一个简单的例子,演示如何将 Qt SQL 数据封装成树: ```cpp // 创建一个 QSqlQueryModel QSqlQueryModel *model = new QSqlQueryModel(); model->setQuery("SELECT * FROM mytable"); // 创建一个 QStandardItemModel QStandardItemModel *treeModel = new QStandardItemModel(); // 遍历 QSqlQueryModel 中的数据 for (int i = 0; i < model->rowCount(); i++) { // 获取每行数据 QSqlRecord record = model->record(i); // 创建一个 QStandardItem,并设置其文本和图标 QStandardItem *item = new QStandardItem(record.value("name").toString()); item->setIcon(QIcon(":/icons/icon.png")); // 将 QStandardItem 添加到树中 treeModel->appendRow(item); // 创建一个子节点,并将其添加到父节点下 QStandardItem *subitem = new QStandardItem(record.value("value").toString()); item->appendRow(subitem); } // 将树设置视图模型 QTreeView *treeView = new QTreeView(); treeView->setModel(treeModel); ``` 在这个例子中,我们从数据库中检索数据,将其存储在一个 QSqlQueryModel 中。然后,我们遍历 QSqlQueryModel 中的数据,为每行数据创建一个 QStandardItem,并将其添加到树中。最后,我们将树设置视图模型显示在界面上。 当然,这只是一个简单的例子,你可以根据自己的需求,使用不同的模型和数据结构来封装 Qt SQL 数据成树。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛郎恋刘娘,刘娘念牛郎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值