欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C/C++?Qt?數(shù)據(jù)庫與TreeView組件綁定詳解

 更新時間:2021年12月07日 11:24:54   作者:LyShark  
本篇文章主要介紹了QT數(shù)據(jù)庫與View組件的綁定,通過數(shù)據(jù)庫與組件關(guān)聯(lián)可實現(xiàn)動態(tài)展示數(shù)據(jù)庫中的表記錄。感興趣的小伙伴可以了解一下

在上一篇博文《C/C++ Qt 數(shù)據(jù)庫QSql增刪改查組件應(yīng)用》介紹了Qt中如何使用SQL操作函數(shù),并實現(xiàn)了對數(shù)據(jù)庫的增刪改查等基本功能,從本篇開始將實現(xiàn)數(shù)據(jù)庫與View組件的綁定,通過數(shù)據(jù)庫與組件關(guān)聯(lián)可實現(xiàn)動態(tài)展示數(shù)據(jù)庫中的表記錄。

我們先以TreeView組件為例,簡單介紹一下如何實現(xiàn)組件與數(shù)據(jù)的綁定,首先我們需要創(chuàng)建一個表并插入幾條測試記錄,運行如下代碼實現(xiàn)建庫建表.

#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;
     }

    // 執(zhí)行SQL創(chuàng)建表
    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();
}

執(zhí)行建庫建表后,數(shù)據(jù)庫內(nèi)記錄如下:

有了數(shù)據(jù)表以后,接著就需要將數(shù)據(jù)表中的記錄與View組件進行綁定,綁定組件首先需要調(diào)用QSqlQueryModel查詢數(shù)據(jù)表中的記錄,當查詢到記錄以后,調(diào)用QItemSelectionModel()將該記錄綁定到對應(yīng)的模型中,最后調(diào)用ui->treeView->setModel(qryModel);以及ui->treeView->setSelectionModel(theSelection);將該模型顯示在TreeView組件內(nèi),這段代碼如下:

#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>

// 定義數(shù)據(jù)模型指針
QSqlQueryModel *qryModel;          // 數(shù)據(jù)模型
QItemSelectionModel *theSelection; // 選擇模型
QDataWidgetMapper *dataMapper;     // 數(shù)據(jù)界面映射

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

     // 查詢數(shù)據(jù)表中記錄
     qryModel=new QSqlQueryModel(this);
     qryModel->setQuery("SELECT * FROM LyShark ORDER BY id");
     if (qryModel->lastError().isValid())
     {
         return;
     }

     // 設(shè)置TableView表頭數(shù)據(jù)
     qryModel->setHeaderData(0,Qt::Horizontal,"ID");
     qryModel->setHeaderData(1,Qt::Horizontal,"Name");
     qryModel->setHeaderData(2,Qt::Horizontal,"Age");

     // 將數(shù)據(jù)綁定到模型上
     theSelection=new QItemSelectionModel(qryModel);
     ui->treeView->setModel(qryModel);
     ui->treeView->setSelectionModel(theSelection);
     ui->treeView->setSelectionBehavior(QAbstractItemView::SelectRows);
}

MainWindow::~MainWindow()
{
    delete ui;
}

運行代碼后,程序會從數(shù)據(jù)庫內(nèi)取出結(jié)果并輸出到TreeView組件上:

到此這篇關(guān)于C/C++ Qt 數(shù)據(jù)庫與TreeView組件綁定詳解的文章就介紹到這了,更多相關(guān)C++ Qt 數(shù)據(jù)庫與TreeView組件綁定內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言中static的使用介紹

    C語言中static的使用介紹

    大家好,本篇文章主要講的是C語言中static的使用介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 指針操作數(shù)組的兩種方法(總結(jié))

    指針操作數(shù)組的兩種方法(總結(jié))

    下面小編就為大家?guī)硪黄羔槻僮鲾?shù)組的兩種方法(總結(jié))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 如何用C語言生成簡單格式的xml

    如何用C語言生成簡單格式的xml

    本篇文章是對使用C語言生成簡單格式的xml的實現(xiàn)代碼進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 簡單的socket編程入門示例

    簡單的socket編程入門示例

    這篇文章主要介紹了簡單的socket編程入門示例,簡單實現(xiàn)client輸入內(nèi)容發(fā)送到server端輸出,需要的朋友可以參考下
    2014-03-03
  • C++單例模式的幾種實現(xiàn)方法詳解

    C++單例模式的幾種實現(xiàn)方法詳解

    這篇文章主要為大家詳細介紹了C++單例模式的幾種實現(xiàn)方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++變量判定的螺旋法則示例詳解

    C++變量判定的螺旋法則示例詳解

    這篇文章主要給大家介紹了關(guān)于C++變量判定的螺旋法則,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C++具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • C語言打印某一年中某月的日歷

    C語言打印某一年中某月的日歷

    本文詳細講解了C語言打印某一年中某月的日歷,文中通過示例代碼介紹的非常詳細。對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12
  • C語言實現(xiàn)單詞小幫手

    C語言實現(xiàn)單詞小幫手

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)單詞小幫手,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 基于C語言sprintf函數(shù)的深入理解

    基于C語言sprintf函數(shù)的深入理解

    本篇文章是對C語言中的sprintf函數(shù)進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 深入解析C++編程中的靜態(tài)成員函數(shù)

    深入解析C++編程中的靜態(tài)成員函數(shù)

    這篇文章主要介紹了深入解析C++編程中的靜態(tài)成員函數(shù),是C++入門學習中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09

最新評論