C&C++   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C/C++ Qt 数据库与TreeView组件绑定大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

在上一篇博文《C/C++ Qt 数据库QSql增删改查组件应用》介绍了Qt中如何使用sqL操作函数,并实现了对数据库的增删改查等基本功能,从本篇开始将实现数据库与View组件的绑定,通过数据库与组件关联可实现动态展示数据库中的表记录。

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

#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QSqlRecord>
#include <iostream>
#include <QStringList>
#include <QString>
#include <QVariant>

#include <QDataWidgetMapper>
#include <QtSql>

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();
}

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

C/C++ Qt 数据库与TreeView组件绑定

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

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QSqlRecord>
#include <iostream>
#include <QStringList>
#include <QString>
#include <QVariant>

#include <QDataWidgetMapper>
#include <QtSql>

#include <QStandardItem>
#include <QStringList>
#include <QStringListModel>

// 定义数据模型指针
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组件绑定

大佬总结

以上是大佬教程为你收集整理的C/C++ Qt 数据库与TreeView组件绑定全部内容,希望文章能够帮你解决C/C++ Qt 数据库与TreeView组件绑定所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: