国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C/C++ Qt 數據庫與TreeView組件綁定詳解

C/C++ Qt 數據庫與TreeView組件綁定詳解

2022-03-10 14:25LyShark C/C++

本篇文章主要介紹了QT數據庫與View組件的綁定,通過數據庫與組件關聯可實現動態展示數據庫中的表記錄。感興趣的小伙伴可以了解一下

在上一篇博文《C/C++ Qt 數據庫QSql增刪改查組件應用》介紹了Qt中如何使用SQL操作函數,并實現了對數據庫的增刪改查等基本功能,從本篇開始將實現數據庫與View組件的綁定,通過數據庫與組件關聯可實現動態展示數據庫中的表記錄。

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#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組件內,這段代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#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++ Qt 數據庫與TreeView組件綁定內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/LyShark/p/15654747.html

延伸 · 閱讀

精彩推薦
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
主站蜘蛛池模板: 日韩成年网站 | 精品九| 亚洲精品乱码久久久久久久 | 免费一级毛片观看 | 美日韩在线 | 国产精品色一区二区三区 | 久久精品一 | 亚洲国产精品无卡做爰天天 | 午夜视频网 | 欧美一区二区三区在线视频 | 久久美女 | 午夜国产 | 人人爽人人爽人人片av | 日本精品在线观看视频 | 成人免费激情视频 | 91视频免费观看 | 久久久久黄 | 久久er99热精品一区二区 | 婷婷国产在线观看 | 欧美激情亚洲 | 国产羞羞视频 | 亚洲九九 | 亚洲人成免费网站 | 午夜在线小视频 | 欧美精品一区在线观看 | 欧美日韩成人一区二区 | 成人午夜视频网 | 国产精品一区二区三区免费 | 美女爽到呻吟久久久久 | 亚洲精品影院在线 | 伊人网在线视频观看 | 情一色一乱一欲一区二区 | 精品国产一区二区三区日日嗨 | 久草精品在线观看 | 成人免费视频网站在线观看 | 免费国产一区 | av特黄| 免费一级毛片 | 日韩一区二区在线播放 | 亚洲午夜激情 | 亚洲精品久久久久久久久久久 |