Qt SQLite的创建和使用

重点:

1.SQLite创建数据库内容方法

链接:SQLite Expert Personal的简单使用-CSDN博客

2.和数据库进行链接方法

QSqlDatabase  DB;	//数据库连接bool MainWindow::openDatabase(QString aFile)
{DB=QSqlDatabase::addDatabase("QSQLITE");	//添加 SQLITE数据库驱动DB.setDatabaseName(aFile);	//设置数据库名称if (!DB.open())     //打开数据库失败return false;else{openTable();	//打开数据表return true;}
}

 3.QTableView和QSqltableModedl、QItemSelectionModel关系

/打开数据表
void MainWindow::openTable()
{//1. 创建数据模型,打开数据表tabModel=new QSqlTableModel(this,DB);	//数据模型tabModel->setTable("employee");			//设置数据表tabModel->setEditStrategy(QSqlTableModel::OnManualSubmit);	//数据保存方式,OnManualSubmit , OnRowChangetabModel->setSort(tabModel->fieldIndex("empNo"),Qt::AscendingOrder); //排序if (!(tabModel->select()))	//查询数据失败{QMessageBox::critical(this, "错误信息","打开数据表错误,错误信息:\n"+tabModel->lastError().text());return;}showRecordCount();      //显示记录条数//2. 设置字段显示标题tabModel->setHeaderData(tabModel->fieldIndex("empNo"),  Qt::Horizontal, "工号");tabModel->setHeaderData(tabModel->fieldIndex("Name"),   Qt::Horizontal, "姓名");tabModel->setHeaderData(tabModel->fieldIndex("Gender"), Qt::Horizontal, "性别");tabModel->setHeaderData(tabModel->fieldIndex("Birthday"),   Qt::Horizontal, "出生日期");tabModel->setHeaderData(tabModel->fieldIndex("Province"),   Qt::Horizontal, "省份");tabModel->setHeaderData(tabModel->fieldIndex("Department"), Qt::Horizontal, "部门");tabModel->setHeaderData(tabModel->fieldIndex("Salary"), Qt::Horizontal, "工资");//这两个字段不在tableView中显示tabModel->setHeaderData(tabModel->fieldIndex("Memo"),Qt::Horizontal,"备注");tabModel->setHeaderData(tabModel->fieldIndex("Photo"),Qt::Horizontal,"照片");//3. 创建选择模型selModel=new QItemSelectionModel(tabModel,this);		//关联选择模型//当前行或列变化时发射currentChanged信号connect(selModel,&QItemSelectionModel::currentChanged,this,&MainWindow::do_currentChanged);//当前行变化时发射currentRowChanged()信号connect(selModel,&QItemSelectionModel::currentRowChanged,this,&MainWindow::do_currentRowChanged);//4. Model/View结构ui->tableView->setModel(tabModel);	//设置数据模型ui->tableView->setSelectionModel(selModel); //设置选择模型ui->tableView->setColumnHidden(tabModel->fieldIndex("Memo"),true);	//隐藏列ui->tableView->setColumnHidden(tabModel->fieldIndex("Photo"),true);	//隐藏列//5. 为tableView中的“性别”和“部门”两个字段设置自定义代理组件QStringList strList;strList<<"男"<<"女";bool isEditable=false;delegateSex.setItems(strList,isEditable);ui->tableView->setItemDelegateForColumn(tabModel->fieldIndex("Gender"),&delegateSex);   //设置代理组件strList.clear();strList<<"销售部"<<"技术部"<<"生产部"<<"行政部";isEditable=true;delegateDepart.setItems(strList,isEditable);ui->tableView->setItemDelegateForColumn(tabModel->fieldIndex("Department"),&delegateDepart); //设置代理组件//6. 创建界面组件与数据模型的字段之间的数据映射dataMapper= new QDataWidgetMapper(this);dataMapper->setModel(tabModel);		//设置数据模型dataMapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit); //数据更新方式//界面组件与数据模型的具体字段之间的联系dataMapper->addMapping(ui->dbSpinEmpNo,tabModel->fieldIndex("empNo"));dataMapper->addMapping(ui->dbEditName,tabModel->fieldIndex("Name"));dataMapper->addMapping(ui->dbComboSex,tabModel->fieldIndex("Gender"));dataMapper->addMapping(ui->dbEditBirth,tabModel->fieldIndex("Birthday"));dataMapper->addMapping(ui->dbComboProvince,tabModel->fieldIndex("Province"));dataMapper->addMapping(ui->dbComboDep,tabModel->fieldIndex("Department"));dataMapper->addMapping(ui->dbSpinSalary,tabModel->fieldIndex("Salary"));dataMapper->addMapping(ui->dbEditMemo,tabModel->fieldIndex("Memo"));dataMapper->toFirst();  //移动到首记录//7. 获取字段名称列表,填充groupBoxSortgetFieldNames();//8.更新actions和界面组件的使能状态ui->actOpenDB->setEnabled(false);	//不能再打开数据库ui->actRecAppend->setEnabled(true);ui->actRecInsert->setEnabled(true);ui->actRecDelete->setEnabled(true);ui->actScan->setEnabled(true);ui->groupBoxSort->setEnabled(true);		//"排序"分租框ui->groupBoxFilter->setEnabled(true);	//"数据过滤"分组框
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/707978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用uniapp开发时自定义tabbar

预览图&#xff1a; 一、配置page.jsong中的tabbar&#xff08;这一步是必须的&#xff0c;因为我们在使用uni.switchTab()时必须要用到&#xff09; "tabBar": {"list": [{"pagePath": "pages/index/index","iconPath": &…

java回顾总结--代理模式

目录 一、代理模式1.1 静态代理示例 1.2 动态代理示例 二、总结 一、代理模式 1.1 静态代理 代理模式给某一个对象提供一个代理对象&#xff0c;并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。比如你按照小卡片上的电话打过去寻求服务&#…

C# 学习第四弹——字符串

一、char类型的使用 字符使用单引号&#xff0c;单个字符 转义字符是一种特殊的字符变量&#xff0c;以反斜线开头&#xff0c;后跟一个或多个字符。 输出多级目录可以使用 二、字符串的声明和初始化 1、引用字符串常量 引用字符串常量初始化——字符使用单引号&#xff0…

加密与安全_探索常用编码算法

文章目录 概述什么是编码编码分类ASCII码 &#xff08;最多只能有128个字符&#xff09;Unicode &#xff08;用于表示世界上几乎所有的文字和符号&#xff09;URL编码 &#xff08;解决服务器只能识别ASCII字符的问题&#xff09;实现&#xff1a;编码_URLEncoder实现&#xf…

K8S常用kubectl命令汇总(持续更新中)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【Prometheus】基于Altertmanager发送告警到多个接收方、监控各种服务、pushgateway

基于Altertmanager发送报警到多个接收方 一、配置alertmanager-发送告警到qq邮箱1.1、告警流程1.2、告警设置【1】邮箱配置【2】告警规则配置【3】 部署prometheus【4】部署service 二、配置alertmanager-发送告警到钉钉三、配置alertmanager-发送告警到企业微信3.1、注册企业微…

量子算法入门—4.量子比特与量子门(1)

1.量子比特 经典比特和量子比特 经典比特只有0、1两种取值&#xff0c;非黑即白&#xff0c;有n位即 2 n 2^n 2n种可能量子比特使用0、1的量子态描述量子比特的状态&#xff0c;可以通过线性组合形成新的量子态&#xff0c;就像光谱可以调节成分 引入线代记法&#xff0c;0、…

ARK:《BIG IDEAS 2024》

Cathie Wood所带领的方舟投资&#xff08;ARK&#xff09;发布了年度重磅研究报告《BIG IDEAS 2024》&#xff0c;该报告指出人工智能、公共区块链、多组学测序、能源存储和机器人技术这五大板块的融合将带来全球经济活动的改变。 这五个创新平台正在融合并定义这个技术时代&am…

92. 递归实现指数型枚举 刷题笔记

思路 dfs 考虑选或者不选每个位置 用0表示未考虑 1表示选 2表示不选 用u表示搜索状态 u>n时 已经搜到底层了 需要输出当前方案 遍历 如果选了则输出 #include<iostream> using namespace std; int n; const int N16; int st[N]; void dfs(int u){ //u来记…

Git自动忽略dll文件的问题

检查了半天发现是sourcetreee的全局忽略文件导致&#xff0c; 从里面删除dll即可。 我是干脆直接删了全局忽略&#xff0c;太恶心了&#xff0c;如下&#xff1a; #ignore thumbnails created by windows Thumbs.db #Ignore files build by Visual Studio *.exe .vsconfig .s…

fastAdmin表格列表的功能

更多文章&#xff0c;请关注&#xff1a;fastAdmin后台功能详解 | 夜空中最亮的星 FastAdmin是一款基于ThinkPHP5Bootstrap的极速后台开发框架。优点见开发文档 介绍 - FastAdmin框架文档 - FastAdmin开发文档 在这里上传几张优秀的快速入门图: 一张图解析FastAdmin中的表格列…

Linux网络编程(四-TCP协议)

目录 一、TCP概念 二、TCP的首部格式 三、TCP可靠传输机制 3.1 确认应答机制 3.2 超时重传机制 3.3 连接管理 3.3.1 三次握手 3.3.2 四次挥手 3.4 流量控制 3.5 拥塞控制 四、TCP效率机制 4.1 滑动窗口 4.2 重发控制 4.3 延迟应答 4.4 捎带应答 五、TCP的…

大数据分布式计算工具Spark实战讲解(数据输入实战)

Python数据容器转RDD对象 PySpark支持通过SparkContext对象的parallelize成员方法&#xff0c;将&#xff1a; - list - tuple - set - dict - str 转换为PySpark的RDD对象 注意&#xff1a; •字符串会被拆分出1个个的字符&#xff0c;存入RDD对象 •字典仅有key会被存入…

Open Harmony开发之分布式账本

简介 Demo基于Open Harmony系统使用ETS语言进行编写&#xff0c;本Demo主要通过设备认证、分布式拉起、分布式数据管理等功能来实现。 应用效果 设备认证,获取同一个局域网内的设备ID&#xff0c;并拉起应用 添加数据并在另一台设备显示该数据 开发步骤 1.新建Openharmony…

安卓使用okhttpfinal下载文件,附带线程池下载使用

1.导入okhttp包 implementation cn.finalteam:okhttpfinal:2.0.7 2.单个下载 package com.example.downloading;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.util.Log; import android.view.View;import java.io.File;import c…

大数据分布式计算工具Spark数据计算实战讲解(map方法,flatmap方法,reducebykey方法)

数据计算 map方法 PySpark的数据计算&#xff0c;都是基于RDD对象来进行的&#xff0c;那么如何进行呢&#xff1f; 自然是依赖&#xff0c;RDD对象内置丰富的&#xff1a;成员方法&#xff08;算子&#xff09; 功能&#xff1a;map算子&#xff0c;是将rdd的数据一条条处…

Java 小项目开发日记 01(注册接口的开发)

Java 小项目开发日记 01&#xff08;注册接口的开发&#xff09; 1.项目需求 完成注册接口 2.项目目录 3. 配置文件&#xff08;pom.xml&#xff09; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-insta…

NWatch-Alarm闹钟功能实现

文章目录 W25Q64初始化SPI初始化W25Q初始化 AlARM模块初始化AlARM模块绘制Draw函数AlARM的更新函数AlARM中最重要的函数 W25Q64初始化 W25Q64用来存储用户设置的闹钟值&#xff0c;开机的时候自动读取闹钟记录。 SPI初始化 使用CubeMx自动配置。 #define SPI1CS_ON HAL_GP…

3d模型导出简单线条的步骤---模大狮模型网

导出简单线条的3D模型通常涉及以下步骤&#xff1a; 创建线条模型&#xff1a;首先&#xff0c;在您的3D建模软件中创建或导入包含线条的模型。这可以是简单的线框模型&#xff0c;也可以是由线条构成的复杂形状。确保您的模型中只包含您希望导出的线条部分。 选择导出格式&am…

Python的自然语言处理库NLTK介绍

NLTK&#xff08;Natural Language Toolkit&#xff09;简介 NLTK是Python中一个领先的自然语言处理&#xff08;NLP&#xff09;库&#xff0c;它提供了文本处理的基础设施&#xff0c;包括分词&#xff08;tokenization&#xff09;、词性标注&#xff08;part-of-speech tag…