目标:创建一个数据库,添加数据,再Qtableview中显示数据

实现如下:

.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QMessageBox>
#include <QStandardItemModel>namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private:Ui::MainWindow *ui;public:QSqlDatabase db;void init();void initTableView();private slots:bool createDb();bool selectDb();public:QStandardItemModel* dataModel ;
};#endif // MAINWINDOW_H

.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QStandardItemModel>
#include <QHeaderView>
#include <QFont>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);init();
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::init()
{connect(ui->pushButtonCreateDb,SIGNAL(clicked(bool)),this,SLOT(createDb()));connect(ui->pushButtonSelectDb,SIGNAL(clicked(bool)),this,SLOT(selectDb()));initTableView();}
void MainWindow::initTableView()
{dataModel = new QStandardItemModel();ui->tableView->setModel(dataModel);  //绑定数据模型//设置列表头dataModel->setColumnCount(3);dataModel->setHeaderData(0, Qt::Horizontal, "id");dataModel->setHeaderData(1, Qt::Horizontal, "firstName");dataModel->setHeaderData(2, Qt::Horizontal, "lastName");}bool MainWindow::createDb()
{db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("SqlDbTest.db");if (!db.open()) {QMessageBox::critical(nullptr, QObject::tr("Cannot open database"),QObject::tr("Unable to establish a database connection.\n""This example needs SQLite support. Please read ""the Qt SQL driver documentation for information how ""to build it.\n\n""Click Cancel to exit."), QMessageBox::Cancel);return false;}QSqlQuery query;query.exec("create table person (id int primary key, ""firstname varchar(20), lastname varchar(20))");query.exec("insert into person values(101, 'Danny', 'Young')");query.exec("insert into person values(102, 'Christine', 'Holand')");query.exec("insert into person values(103, 'Lars', 'Gordon')");query.exec("insert into person values(104, 'Roberto', 'Robitaille')");query.exec("insert into person values(105, 'Maria', 'Papadopoulos')");query.exec("create table items (id int primary key,""imagefile int,""itemtype varchar(20),""description varchar(100))");query.exec("insert into items ""values(0, 0, 'Qt',""'Qt is a full development framework with tools designed to ""streamline the creation of stunning applications and  ""amazing user interfaces for desktop, embedded and mobile ""platforms.')");query.exec("insert into items ""values(1, 1, 'Qt Quick',""'Qt Quick is a collection of techniques designed to help ""developers create intuitive, modern-looking, and fluid ""user interfaces using a CSS & JavaScript like language.')");query.exec("insert into items ""values(2, 2, 'Qt Creator',""'Qt Creator is a powerful cross-platform integrated ""development environment (IDE), including UI design tools ""and on-device debugging.')");query.exec("insert into items ""values(3, 3, 'Qt Project',""'The Qt Project governs the open source development of Qt, ""allowing anyone wanting to contribute to join the effort ""through a meritocratic structure of approvers and ""maintainers.')");query.exec("create table images (itemid int, file varchar(20))");//         query.exec("insert into images values(0, 'images/qt-logo.png')");//         query.exec("insert into images values(1, 'images/qt-quick.png')");//         query.exec("insert into images values(2, 'images/qt-creator.png')");//         query.exec("insert into images values(3, 'images/qt-project.png')");return true;
}bool MainWindow::selectDb()
{QSqlQuery query;int id;QString firstname;QString lastname;QStandardItem* itemId;QStandardItem* itemFirstName;QStandardItem*itemLastName;query.exec("SELECT id, firstname,lastname FROM person ");int i = 0;while (query.next()){id = query.value(0).toInt();firstname = query.value(1).toString();lastname = query.value(2).toString();//标准项, 用来保存一个数据项itemId = new QStandardItem;itemId->setData(id, 0);itemFirstName = new QStandardItem;itemFirstName->setData(firstname, 0);itemLastName = new QStandardItem;itemLastName->setData(lastname, 0);//添加设置数据dataModel->setItem(i, 0,itemId);dataModel->setItem(i, 1,itemFirstName);dataModel->setItem(i, 2,itemLastName);//设置数据居中显示dataModel->item(i, 0)->setTextAlignment(Qt::AlignCenter);//设置数据显示颜色dataModel->item(i, 0)->setForeground(QBrush(QColor(255, 0, 0)));i++;}return true;
}

实现效果:
点击创建按钮创建一个数据库文件。点击查询显示数据库中的person表

QT -- Qtableview 与 Qsql 应用一 创建查询相关推荐

  1. QT QtableView操作详解

    本文实现了使用QtableView控件来显示数据,数据源使用txt文本作为数据源,使用了QStandardItemModel作为数据模型来实现了对TableView空间的初始化,和对txt数据源的增删 ...

  2. Qt | QTableView的使用方法

    Qt | QTableView的使用方法 QTableView的数据是基于model显示的,需要先建一个model,然后tableView通过setModel进行模型绑定,后续操作model就可以实现 ...

  3. qt qtableview 刷新列表_qt qtablewidget 刷新

    QTableWidget单击.双击表头进行排序_互联网_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 QTableWidget单击.双击表头进行排序_互联网_IT/计算机_专业... ...

  4. 一文搞定Swing和Qt按钮和文本框的创建

    一文搞定Swing和Qt按钮和文本框的创建 Qt的截图 java的 源码 package com.lujun;import java.awt.Container;import javax.swing. ...

  5. Qt_Window@Qt Command Prompt从命令行创建工程

    #include <QApplication> #include <QLabel>int main(int argc, char *argv[]) {QApplication ...

  6. Qt DLL总结【二】-创建及调用QT的 DLL

    目录 Qt DLL总结[一]-链接库预备知识 Qt DLL总结[二]-创建及调用QT的 DLL Qt DLL总结[三]-VS2008+Qt 使用QPluginLoader访问DLL 开发环境:VS20 ...

  7. C#表达式目录树系列之5 –动态创建查询表达式

    概要 在项目开发中,根据用户的需求,一般来是,我们的查询表达式是固定的,新的查询需求都要通过代码的修改来实现.而对于不确定的查询条件,固定查询表达式的方式显然是行不通的. 针对固定查询表达式存在的问题 ...

  8. 某电商网站的数据库设计(6)——创建查询销售数据的视图

    某电商网站的数据库设计(6)--创建查询销售数据的视图 目录 某电商网站的数据库设计(6)--创建查询销售数据的视图 1.统计总的销售信息 2.按日期分组统计 3.按店铺分组统计--全店汇总 4.按销 ...

  9. 微软 crm开发笔记 创建查询条件,生成Fetch.XML文件

    创建查询条件,生成Fetch.XML文件 可生成: <fetch version="1.0" output-format="xml-platform" m ...

最新文章

  1. MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片
  2. Provisional headers are shown in Chrome network tab
  3. 我与ARM的那些事儿2JINLK烧录nor flash
  4. python创建虚拟环境时出现拒绝访问_无法创建虚拟环境
  5. node.js——麻将算法(五)胡牌算法的一些优化处理方案(有赖子版)
  6. springcloud使用zipkin实现链路追踪与监控
  7. linux的munit命令,LinuxUnit命令学习(三)
  8. Calendar的api方法
  9. 采用Docker集成jquery-file-upload组件到WEB应用
  10. (转)jquery基础教程七 选择器(selectors 的xpath语法应用)
  11. yum配合rpm查看软件包安装位置
  12. 2pin接口耳机_让耳机“轻松一下”—— QDC BTX(耳机蓝牙线)
  13. 微信加好友CALL地址 3.4.5.27
  14. java 在某个时间段定时_Java 在某一个时间点定时执行任务(转载)
  15. Faker 新版本Faker类的用法
  16. 使用Java模拟登录
  17. 第4章第16节:图表:使用三维饼图制作年度销售额图表 [PowerPoint精美幻灯片实战教程]
  18. 前端提高篇(五十四)练习7:animation动画练习
  19. 深度学习相关概念:权重初始化
  20. ai怎么平均排列,ai怎样可以按设定的距离进行平均分布排列

热门文章

  1. 编译原理(龙书):第一章部分题目参考答案
  2. 基于jeesite+android开发 电子商务系统免费教程
  3. 第二章 第九小节Duilib中的CComboUI控件-下拉列表控件
  4. 关于Windows下记事本中保存编码的格式问题
  5. 安卓系统的导航仪怎么设置导航启动路径为高德地图_2019春节温暖回家路,高德地图6大实用功能逐一看...
  6. 一文读懂RS-232与RS-422及RS-485三者之间的特性与区别
  7. 校外培训行业迎来强监管,“教育+区块链”新模式试图解决行业痼疾
  8. Shell编程规范与Shell中的管道符号(|)和重定向符号<、>、>>
  9. 八年测试,谈谈这么多年来对软件测试的一些感想与职业规划
  10. 纸上得来终觉浅,可以这里看一眼(一)---->栈和队列