QSqlRelationalTableModel 关系表格模型
一、
1.1 QSqlRelationalTableModel继承自QSqlTableModel,并且对其进行了扩展,提供了对外键的支持。一个外键就是一个表中的一个字段 和 其他表中的主键字段之间的一对一的映射。例如,“studInfo”表中的departID字段对应的是“departments”表中的departID字段,那么就称字段departID是一个外键。因为这里的departID字段的值是一些数字,这样的显示很不友好,使用关系表格模型,就可以将它显示为“departments”表中的department字段的值。

1.2 使用“代码字段”的意义
1)major和department 字段,都是“汉字”:不仅 存储空间占用多,而且 “汉字可能会被修改”
2)如果使用“代码字段”标识:
不仅占用空间小,而且 修改汉字,并不影响对应的 数值标识departID。
如果不使用数值标识,每个表中都使用department的汉字。那么,每个表中的department汉字都要修改!

1.3
1)departments\majors表:专业代码字段departID\majorID 对应的数据表;
studInfo表:具有(包含)代码字段departID\majorID的数据表;
2)QSqlRelationalTableModel类:专门用来编辑这种具有代码字段的数据表。(使用数值代码:标识汉字文字的字段)
使用QSqlRelationalTableModel作为tableView的数据源,显示和编辑studInfo数据表(具有代码字段);

二、
//打开数据表tabModel= new QSqlRelationalTableModel(this, DB);tabModel->setTable("studInfo"); //设置数据表studInfotabModel->setEditStrategy(QSqlTableModel::OnManualSubmit); //OnManualSubmit , OnRowChangetabModel->setSort(0,Qt::AscendingOrder);tabModel->setHeaderData(0,Qt::Horizontal,"学号");tabModel->setHeaderData(1,Qt::Horizontal,"姓名");tabModel->setHeaderData(2,Qt::Horizontal,"性别");tabModel->setHeaderData(3,Qt::Horizontal,"学院");tabModel->setHeaderData(4,Qt::Horizontal,"专业");//列号索引:从0开始,且不算隐藏列rowid列!//setRelation:在2个表之间建立关系!//设置代码字段的查询关系数据表//指定表"studInfo"的第3列是一个外键,将它映射为表"departments"的"departID"字段,并且视图应该在第3列显示"department"字段;tabModel->setRelation(3, QSqlRelation("departments","departID","department")); //学院//setRelation:在“studInfo”表 和 “majors”表之间建立关系//指定表"studInfo"的第4列是一个外键,将它和表"majors"的"majorID"字段建立映射关系,并且视图应该在第4列显示"major"字段tabModel->setRelation(4, QSqlRelation("majors","majorID","major"));//专业theSelection= new QItemSelectionModel(tabModel);connect(theSelection,SIGNAL(currentChanged(QModelIndex,QModelIndex)),this,SLOT(on_currentChanged(QModelIndex,QModelIndex)));ui->tableView->setModel(tabModel);//设置模型ui->tableView->setSelectionModel(theSelection);//设置选择模型ui->tableView->setItemDelegate(new QSqlRelationalDelegate(ui->tableView)); //为关系型字段设置缺省代理组件
//setRelation:在2个表之间建立关系!设置代码字段的查询关系数据表;
//指定表"studInfo"的第3列(departID)是一个外键,将它映射为表"departments"的"departID"字段,并且视图应该在第3列显示"department"字段;
tabModel->setRelation(3, QSqlRelation("departments","departID","department")); //学院
相关文章:
QSqlRelationalTableModel 关系表格模型
一、 1.1 QSqlRelationalTableModel继承自QSqlTableModel,并且对其进行了扩展,提供了对外键的支持。一个外键就是一个表中的一个字段 和 其他表中的主键字段之间的一对一的映射。例如,“studInfo”表中的departID字段对应的是“departments…...
JS和CSS实现的原生轮播图
JSCSS实现滑动轮播图 使用JS加CSS来实现的幻灯片,主要使用的是CSS的transform属性中的translate来实现,适合与用户交互的轮播图,展现轮播图的数量,用户可自由进行选择。 <!DOCTYPE html> <html lang"en">&…...
【微服务】skywalking自定义链路追踪与日志采集
目录 一、前言 二、自定义链路追踪简介 2.1 自定义链路追踪应用场景 2.2 链路追踪几个关键概念 三、skywalking 自定义链路追踪实现 3.1 环境准备 3.2 集成过程 3.2.1 导入核心依赖 3.2.2 几个常用注解 3.2.3 方法集成 3.2.4 上报追踪信息 四、skywalking 自定义日志…...
MYSQL基础问题
一.DBMS 是什么 DBMS(Database Management System),数据库管理系统,是一种操纵和管理 数据库的大型软件,用于建立、使用和维护数据库。对数据库进行统一的管理和 控制,以保证数据库的安全性和完整性。 二…...
SpringBoot使用Guava实现日志脱敏(含源码)
点击下载《SpringBoot使用Guava实现日志脱敏(含源码)》 1. 摘要 本文将介绍如何使用Google Guava库进行日志脱敏,保护敏感数据的安全。我们将详细解释脱敏的必要性,然后介绍如何使用Guava中的Strings、Maps和CharMatcher类来进行…...
数据结构—动态查找
动态查找介绍 1. 动态查找的引入:当查找表以线性表的形式组织时,若对查找表进行插入、删除或排序操作,就必须移动大量的记录,当记录数很多时,这种移动的代价很大。 2. 动态查找表的设计思想:表结构本身是…...
Tarjan算法学习笔记
目录 无向图的割点与桥 时间戳: 搜索树: 追溯值: 割边判定法则: 割点判定法则: 无向图的双连通分量 定理: 边双连通分量(e-DCC)的求法: e-DCC的缩点: 有向图的连通性 追…...
vue 项目涉及的焦点聚焦、格式化日期、判断是否为对象或数组、判断是否为空、深拷贝、节流、防抖
焦点聚焦 import Vue from vue // 插件对象(必须有 install 方法, 才可以注入到 Vue.use 中) export default {install () {Vue.directive(fofo, {inserted (el) {el el.querySelector(input)el.focus()}})} }格式化日期格式 export const formatDate (time) > {// 将xx…...
软件工程知识梳理6-运行和维护
软件维护需要的工作量很大,大型软件的维护成本高达开发成本的4倍左右。所以,软件工程的主要目的就是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。 定义:软件已经交付使用之后,…...
docker- php7.4
安装 gd拓展 anzhuanga在Dockerfile里面安装php7.4的GD库 - 知乎 apt update apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-devdocker-php-source extractdocker-php-ext-configure gd \ --with-jpeg/usr/include \ --with-freetype/usr/include/docker-…...
开发一个Android App,在项目中完成添加联系人的功能,通过ContentResolver向系统中添加联系人信息。
实现步骤: (1)添加动态联系人的权限。 (2)创建Activity和布局文件,添加输入框和按钮等控件。 (3)完成添加联系人的功能。 代码文件如下: activity_main.xml文件 <!…...
Flume搭建
压缩包版本:apache-flume-1.9.0-bin.tar 百度盘链接:https://pan.baidu.com/s/1ZhSiePUye9ax7TW5XbfWdw 提取码:ieks 1.解压 tar -zxvf /opt/software/apache-flume-1.9.0-bin.tar.gz -C /opt/module/ 2. 修改文件名 [rootbigdata1 opt]…...
Web APIs 1 DOM操作
Web APIs 1 引入:const优先Web API 基本认知01 作用和分类02 什么是DOM03 DOM树04 DOM对象 获取DOM对象01 根据CSS选择器获取02 其他获取DOM元素方法 操作元素内容01 innerText 属性02 innerHTML 属性 操作元素属性操作元素的常用属性操作元素的样式属性操作表单元素…...
dvwa,xss反射型lowmedium
xss,反射型,low&&medium low发现xss本地搭建实操 medium作为初学者的我第一次接触比较浅的绕过思路high low 发现xss 本关无过滤 <script>alert(/xss/)</script> //或 <script>confirm(/xss/)</script> //或 <scr…...
从云计算到物联网:虚拟化技术的演变与嵌入式系统的融合
文章目录 一、硬件性能提升:摩尔定律与嵌入式虚拟化二、CPU多核技术:为嵌入式虚拟化提供支持三、业务负载整合:嵌入式虚拟化的核心需求四、降低硬件成本:虚拟化技术的经济效益五、软件重用与移植:虚拟化技术的优势六、…...
linux 文件查看 head 、 cat 、 less 、tail 、grep
查看文件详细信息 stat 文件 cat 》》适合显示小文件【行数比较少】,如果行数较多,屏幕显示不完整(如果虚拟操作,是无法上下键的,或者滚动鼠标的,第三方 xsheel,crt 可以方向键查看…...
13.2 Web与Servlet进阶(❤❤)
13.2 Web与Servlet进阶 1. 请求与响应1.1 URL与URI1.2 HTTP请求的结构1. 结构2.后端获取访问工具类型:getHeader().toLowerCase方法1.3 响应的结构1. 结构2. 响应常见状态码3. 后端设置响应参数4. 响应的ContentType作用1.4 请求转发与响应重定向应用1. 请求转发:getRequestDis…...
记录解决报错--vue前后端分离,接口401(Unauthorized)
1.场景 前端访问不了后端接口。报错401。 2.解决步骤 ①在页面console.log(111)查看走到代码的位置没有。(走到了,没问题) ②查看vue.config.js配置。这段配置就是vue访问api的url。(没问题) devServer: {port: 80…...
【笔记】Android 常用编译模块和输出产物路径
模块&产物路径 具体编译到软件的路径要看编译规则的分区,代码中模块编译输出的产物基本对应。 Android 代码模块 编译产物路径设备adb路径Comment 模块device/mediatek/system/common/ 资源overlay/telephony/frameworks/base/core 文件举例res/res/values-m…...
部署私有知识库项目FastGPT
FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景。 项目文档: [快速了解 FastGpt | FastGptFastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即…...
W25Q256JWEIQ 1.8V 低功耗大容量串行 NOR Flash存储器——华邦电子 全新原装芯片IC
W25Q256JWEIQ:1.8V 低功耗大容量串行 NOR Flash——华邦 SpiFlash 系列,为嵌入式系统注入节能存储芯动力 Winbond(华邦电子)推出的 W25Q256JWEIQ 256Mbit 串行 NOR Flash-存储器, 1.7V ~ 1.95V 的低电压供电、133MHz …...
动态模型避坑指南:从事件脚本到状态图的5个常见错误及解决方法
动态模型避坑指南:从事件脚本到状态图的5个常见错误及解决方法 在交互式系统开发中,动态模型是连接用户需求与技术实现的关键桥梁。许多中高级开发者虽然掌握了UML工具的基本操作,却在真实项目交付时频繁遭遇状态机失控、事件响应异常等"…...
通义千问2.5-7B省钱部署案例:GGUF量化仅4GB,3060流畅运行
通义千问2.5-7B省钱部署案例:GGUF量化仅4GB,3060流畅运行 用一张RTX 3060显卡,4GB显存就能流畅运行70亿参数的大模型?这不是天方夜谭,而是通义千问2.5-7B带来的真实体验。 1. 为什么选择通义千问2.5-7B? 如…...
the-glorious-dotfiles 核心功能解析:从通知中心到屏幕录制
the-glorious-dotfiles 核心功能解析:从通知中心到屏幕录制 【免费下载链接】the-glorious-dotfiles A glorified personal dot files 项目地址: https://gitcode.com/gh_mirrors/th/the-glorious-dotfiles the-glorious-dotfiles 是一套功能丰富的个人配置文…...
ESP32轻量级GraphQL客户端库设计与嵌入式实践
1. 项目概述esp32-graphql-client是一款专为 ESP32 平台设计的轻量级、高可靠性 GraphQL 客户端库,其设计哲学直接受益于 Apollo Client 的简洁性与表达力。该库并非简单封装 HTTP 请求,而是构建了一套面向嵌入式场景的完整数据交互抽象层:它…...
网盘下载速度太慢?这款开源工具让你告别限速烦恼!
网盘下载速度太慢?这款开源工具让你告别限速烦恼! 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘…...
MATLAB科研绘图:如何用title/legend/grid on让你的论文图表通过审稿人‘火眼金睛’?
MATLAB科研绘图:学术图表标注的审稿人级优化指南 科研图表是论文的"门面",审稿人往往在30秒内就能通过图表质量判断研究的严谨性。我曾参与多个顶级期刊的图表评审工作,发现90%的退稿图表问题都出在标注细节上——不是数据不好&…...
开源免费压缩软件PeaZip:跨平台文件压缩与管理的全能解决方案
开源免费压缩软件PeaZip:跨平台文件压缩与管理的全能解决方案 【免费下载链接】PeaZip Free Zip / Unzip software and Rar file extractor. Cross-platform file and archive manager. Features volume spanning, compression, authenticated encryption. Supports…...
立创泰山派RK3566开发板串口调试:从1500000到115200的保姆级修改指南
立创泰山派RK3566开发板串口调试:从1500000到115200的保姆级修改指南 刚拿到立创泰山派RK3566开发板时,很多开发者都会遇到一个令人头疼的问题——默认的串口波特率高达1500000bps,而市面上大多数串口调试工具根本不支持这个速率。这就像拿到…...
Atlas数据库代理的终极演进:从MySQL中间件到智能数据平台的完整指南
Atlas数据库代理的终极演进:从MySQL中间件到智能数据平台的完整指南 【免费下载链接】Atlas A high-performance and stable proxy for MySQL, it is developed by Qihoos DBA and infrastructure team 项目地址: https://gitcode.com/gh_mirrors/at/Atlas A…...
