千家信息网

C/C++ Qt数据库与TreeView组件绑定的方法是什么

发表于:2025-02-10 作者:千家信息网编辑
千家信息网最后更新 2025年02月10日,本篇内容主要讲解"C/C++ Qt数据库与TreeView组件绑定的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C/C++ Qt数据库与Tre
千家信息网最后更新 2025年02月10日C/C++ Qt数据库与TreeView组件绑定的方法是什么

本篇内容主要讲解"C/C++ Qt数据库与TreeView组件绑定的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C/C++ Qt数据库与TreeView组件绑定的方法是什么"吧!

我们先以TreeView组件为例,简单介绍一下如何实现组件与数据的绑定,首先我们需要创建一个表并插入几条测试记录,运行如下代码实现建库建表.

#include #include #include #include #include #include #include #include #include #include void Init(){    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");    db.setDatabaseName("./lyshark.db");     if (!db.open())     {            std::cout << db.lastError().text().toStdString()<< std::endl;            return;     }    // 执行SQL创建表    db.exec("DROP TABLE LyShark");    db.exec("CREATE TABLE LyShark ("                    "id INTEGER PRIMARY KEY AUTOINCREMENT, "                    "name VARCHAR(40) NOT NULL, "                    "age INTEGER NOT NULL)"         );    // 逐条插入    db.exec("INSERT INTO LyShark(name,age) VALUES('admin',22)");    db.exec("INSERT INTO LyShark(name,age) VALUES('lyshark',25)");    db.exec("INSERT INTO LyShark(name,age) VALUES('zhangsan',22)");    db.exec("INSERT INTO LyShark(name,age) VALUES('wangwu',22)");    db.commit();}MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){    ui->setupUi(this);    Init();}

执行建库建表后,数据库内记录如下:

有了数据表以后,接着就需要将数据表中的记录与View组件进行绑定,绑定组件首先需要调用QSqlQueryModel查询数据表中的记录,当查询到记录以后,调用QItemSelectionModel()将该记录绑定到对应的模型中,最后调用ui->treeView->setModel(qryModel);以及ui->treeView->setSelectionModel(theSelection);将该模型显示在TreeView组件内,这段代码如下:

#include "mainwindow.h"#include "ui_mainwindow.h"#include #include #include #include #include #include #include #include #include #include #include #include #include // 定义数据模型指针QSqlQueryModel *qryModel;          // 数据模型QItemSelectionModel *theSelection; // 选择模型QDataWidgetMapper *dataMapper;     // 数据界面映射MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){    ui->setupUi(this);    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");    db.setDatabaseName("./lyshark.db");     if (!db.open())     {            std::cout << db.lastError().text().toStdString()<< std::endl;            return;     }     // 查询数据表中记录     qryModel=new QSqlQueryModel(this);     qryModel->setQuery("SELECT * FROM LyShark ORDER BY id");     if (qryModel->lastError().isValid())     {         return;     }     // 设置TableView表头数据     qryModel->setHeaderData(0,Qt::Horizontal,"ID");     qryModel->setHeaderData(1,Qt::Horizontal,"Name");     qryModel->setHeaderData(2,Qt::Horizontal,"Age");     // 将数据绑定到模型上     theSelection=new QItemSelectionModel(qryModel);     ui->treeView->setModel(qryModel);     ui->treeView->setSelectionModel(theSelection);     ui->treeView->setSelectionBehavior(QAbstractItemView::SelectRows);}MainWindow::~MainWindow(){    delete ui;}

运行代码后,程序会从数据库内取出结果并输出到TreeView组件上:

到此,相信大家对"C/C++ Qt数据库与TreeView组件绑定的方法是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0