PyQt5数据库开发1 4.3 QSqlTableModel 之 Qt项目的创建
目录
一、新建Qt项目
1. 编辑资源文件
2. 添加前缀
3. 新建放资源文件的目录
4. 添加图标文件
二、Action
1. 新建打开数据库Action
2. 添加其他Action
三、工具栏
1. 添加工具栏
2. 拖动actOpenDB到工具栏
3. 设置工具栏属性
4. 添加分隔符
5. 添加其他工具
6. 工具栏层次结构
四、菜单
1. 添加文件分组
2. 添加其他文件分组下菜单项
3. 添加其他分组和菜单项
4. 菜单层次结构
五、关闭Action的实现
六、修改Action的状态
七、添加组件和布局
1. 最外左右两个GroupBox的布局
2. frame的布局
3. 排序groupbox的布局
4. 数据过滤groupbox的布局
5. 右侧groupbox的布局
6. 分裂器QSplitter
7. 总的层次结构
八、添加下拉框选项
1. 性别下拉框
2. 省份下拉框
3. 部门下拉框
九、编译窗体文件和资源文件
1. 建立批处理文件
2. 双击运行批处理文件
十、新建Eric6项目
1. 新建项目
2. 新建myMainWindow.py
3. 运行myMainWindow.py
4. 新建appMain.py
5. 运行appMain.py
后续
一、新建Qt项目
Tips1 建好项目后,组件结构如图
MainWindow的windowTitle属性设为bkj4-3
1. 编辑资源文件
在文件res.qrc上点击右键,选择Open In Editor
2. 添加前缀
添加前缀icons
3. 新建放资源文件的目录
原QtApp目录文件如下
在这个目录下新建images文件夹
将所有图标文件放到images文件夹里面
4. 添加图标文件
二、Action
1. 新建打开数据库Action
打开Action Editor,点击新建按钮
2. 添加其他Action
类似的添加Action,最终结果如图所示
保存,退出Action编辑器
三、工具栏
1. 添加工具栏
窗体空白处点右键,选择添加工具栏,命名为mainToolBar
2. 拖动actOpenDB到工具栏
拖完后,工具栏出现图标
只有图标,没有文字,不好看
3. 设置工具栏属性
修改工具栏的toolButtonStyle属性,改为ToolButtonTextUnderIcon
改了以后,工具栏变了样
4. 添加分隔符
右键点击工具栏,选择添加分隔符
5. 添加其他工具
Tips2 最终效果如图
6. 工具栏层次结构
四、菜单
1. 添加文件分组
双击,输入”文件(&F)”
完成这个Action的添加
2. 添加其他文件分组下菜单项
3. 添加其他分组和菜单项
4. 菜单层次结构
五、关闭Action的实现
点击工具栏上的Edit Signals/Slots按钮
点击底部的Signals Slots Editor,点上面的+号
出现
发送者选actQuit这个Action,信号选择triggered(),接收者选择MainWindow,槽选择close()
点击上方的×保存
六、修改Action的状态
除了actOpenDB和actQuit之外,把其他的action全部改为不是enabled的
修改前
修改后
修改完之后,工具栏变成这样
菜单项变成这样
七、添加组件和布局
Tips3 如图添加组件,实现类似下图输出
1. 最外左右两个GroupBox的布局
左右两个GroupBox
左边的GroupBox,上面放一个frame,下面放一个table view
就像下图的层次结构一样
2. frame的布局
frame由三个部分组成,一个排序GroupBox,一个数据过滤GroupBox,还有一个水平Spacer
层次结构类似如下
构造如下
3. 排序groupbox的布局
4. 数据过滤groupbox的布局
5. 右侧groupbox的布局
注意
(1)dbSpinEmpNo的minimum属性为0,maximum属性为10000
(2)dbSpinSalary的minimum属性为0,maximum属性为50000,singleStep为100
(3)其中的dbEditBirth的InputMask为9999-99-99
6. 分裂器QSplitter
当前总体的层次结构如下
按住ctrl键,选中groupboxleft和groupboxright,右键->布局->使用分裂器水平布局
可以看到层次结构变了,在cenralwidget和两个groupbox之间加多了一层splitter
窗体变为如下
7. 总的层次结构
其中groupboxleft部分的层次结构
groupboxright部分的层次结构
八、添加下拉框选项
1. 性别下拉框
双击性别下拉框
点加号填入选项
结果如图
2. 省份下拉框
3. 部门下拉框
九、编译窗体文件和资源文件
1. 建立批处理文件
在e:\baikejia\bkj4-3目录下创建一个compile.bat文件,输入以下内容
2. 双击运行批处理文件
编译完成,拷贝完成,新生成了三个文件
十、新建Eric6项目
1. 新建项目
2. 新建myMainWindow.py
内容如下
3. 运行myMainWindow.py
确保可以运行
4. 新建appMain.py
5. 运行appMain.py
确保可以运行
后续
🆗,这次实操比较多内容,下次更新这一篇的后续,是关于SQL Server表建立和远程连接设置和写对应的槽函数。期待小伙伴的关注!!!
相关文章:
PyQt5数据库开发1 4.3 QSqlTableModel 之 Qt项目的创建
目录 一、新建Qt项目 1. 编辑资源文件 2. 添加前缀 3. 新建放资源文件的目录 4. 添加图标文件 二、Action 1. 新建打开数据库Action 2. 添加其他Action 三、工具栏 1. 添加工具栏 2. 拖动actOpenDB到工具栏 3. 设置工具栏属性 4. 添加分隔符 5. 添加其他工具 6.…...
【大数据】第三章:详解HDFS(送尚硅谷笔记和源码)
什么是HDFS HDFS是(Hadoop Distributed File System)的缩写,也即Hadoop分布式文件系统。它通过目录树定位在分布式场景下 在不同服务器主机上的文件。它适用于一次写入,多次读出的场景。 HDFS的优缺点 优点 1,高容…...
27岁想转行IT,还来得及吗?
来不来得及不还是看你自身的意愿和条件,这个问题要问你自己吧! 每个人的能力、看法都不同。面对类似的问题,很多人会把侧重点放在IT上,或者27岁上面。那么我们试着换一个方式来问呢:什么时候适合转行,有哪些…...
Web前端CSS清除浮动的5种方法
在移动端清除浮动布局,常用的5种方法: 使用清除浮动的类;使用overflow属性;使用 flex 布局;使用grid 布局;使用 table 布局。 根据实际情况选择适合的方法,需要注意兼容性和语义性问题。在移动…...
Java:博客系统,实现加盐加密,分页,草稿箱,定时发布
文章目录1. 项目概述2. 准备工作2.1 数据库表格代码2.2 前端代码2.3 配置文件3. 准备项目结构3.1 拷贝前端模板3.2 定义实体类3.3 定义mapper接口和 xml 文件3.4 创建其他包4. 统一数据返回4.1 Result 类4.2 统一数据格式5. 注册5.1 逻辑5.2 验证数据规范性5.3 实现注册5.4 前端…...
JuiceFS 在火山引擎边缘计算的应用实践
火山引擎边缘云是以云计算基础技术和边缘异构算力结合网络为基础,构建在边缘大规模基础设施之上的云计算服务,形成以边缘位置的计算、网络、存储、安全、智能为核心能力的新一代分布式云计算解决方案。边缘存储主要面向适配边缘计算的典型业务场景&#…...
实验06 二叉树遍历及应用2022
A. 【程序填空】二叉树三种遍历题目描述给定一颗二叉树的特定先序遍历结果,空树用字符‘0’表示,例如AB0C00D00表示如下图请完成以下程序填空,建立该二叉树的二叉链式存储结构,并输出该二叉树的先序遍历、中序遍历和后序遍历结果输…...
基于蜣螂算法改进的LSTM分类算法-附代码
基于蜣螂算法改进的LSTM分类算法 文章目录基于蜣螂算法改进的LSTM分类算法1.数据集2.LSTM模型3.基于蜣螂算法优化的RF4.测试结果5.Matlab代码摘要:为了提高LSTM数据的分类预测准确率,对LSTM中的参数利用蜣螂搜索算法进行优化。1.数据集 数据的来源是 UC…...
如何正确应用GNU GPLv3 和 LGPLv3 协议
文章目录前言GNU GPLv3.0Permissions(许可)Conditions(条件)Limitations(限制)GNU LGPLv3.0应用GPLv3.0应用LGPLv3.0建议的内容:添加文件头声明附录GNU GPLv3.0原文GNU LGPLv3.0 原文前言 对于了解开源的朋友们,GNU GPL系列协议可谓是老朋友了。原来我基…...
Python局部函数及用法(包含nonlocal关键字)
Python 函数内部可以定义变量,这样就产生了局部变量,可能有人会问,Python 函数内部能定义函数吗?答案是肯定的。Python 支持在函数内部定义函数,此类函数又称为局部函数。 那么,局部函数有哪些特征&#x…...
关于BMS的介绍及应用领域
电池管理系统(Battery Management System,BMS)是一种集成电路系统,它用于监测和控制电池系统状态,以确保电池的正常运行和安全使用。BMS的应用涵盖了电动汽车、储能系统、无人机、电动工具等各个领域,可以提…...
2月datawhale组队学习:大数据
文章目录一、大数据概述二、 Hadoop2.1 Hadoop概述2.2 su:Authentication failure2.3 使用sudo命令报错xxx is not in the sudoers file. This incident will be reported.2.4 创建用户datawhale,安装java8:2.5 安装单机版Hadoop2.5.1 安装Hadoop2.5.2 修…...
在Spring框架中创建Bean实例的几种方法
我们希望Spring框架帮忙管理Bean实例,以便得到框架所带来的种种功能,例如依赖注入等。将一个类纳入Spring容器管理的方式有几种,它们可以解决在不同场景下创建实例的需求。 XML配置文件声明 <?xml version"1.0" encoding"…...
PyQt5 界面预览工具
简介 一款为了预览PyQt5设计的UI界面而开发的工具,使用时需要结合PyCharm同时使用。 下载 PyQt5界面预览工具 参数说明 使用配置 启动PyCharm,找到File -> Settings,打开 找到Tools -> External Tools点击打开,在新界面…...
day44【代码随想录】动态规划之零钱兑换II、组合总和 Ⅳ、零钱兑换
文章目录前言一、零钱兑换II(力扣518)二、组合总和 Ⅳ(力扣377)三、零钱兑换(力扣322)总结前言 1、零钱兑换II 2、组合总和 Ⅳ 3、零钱兑换 一、零钱兑换II(力扣518) 给你一个整数…...
计算机网络第1章(概述)学习笔记
❤ 作者主页:欢迎来到我的技术博客😎 ❀ 个人介绍:大家好,本人热衷于Java后端开发,欢迎来交流学习哦!( ̄▽ ̄)~* 🍊 如果文章对您有帮助,记得关注、点赞、收藏、…...
GPT-3(Language Models are Few-shot Learners)简介
GPT-3(Language Models are Few-shot Learners) 一、GPT-2 1. 网络架构: GPT系列的网络架构是Transformer的Decoder,有关Transformer的Decoder的内容可以看我之前的文章。 简单来说,就是利用Masked multi-head attention来提取文本信息&a…...
容器安全风险and容器逃逸漏洞实践
本文博客地址:https://security.blog.csdn.net/article/details/128966455 一、Docker存在的安全风险 1.1、Docker镜像存在的风险 不安全的第三方组件:用户自己的代码依赖若干开源组件,这些开源组件本身又有着复杂的依赖树,甚至…...
2023年美赛B题-重新想象马赛马拉
背景 肯尼亚的野生动物保护区最初主要是为了保护野生动物和其他自然资源资源。肯尼亚议会于2013年通过了《野生动物保护和管理法》提供更公平的资源共享,并允许替代的、以社区为基础的管理工作[1]。此后,肯尼亚增加了修正案,以解决立法中的空…...
Docker常用命令总结
目录 一、帮助启动类命令 (1)启动docker (2)停止docker (3)重启docker (4)查看docker (5)设置开机自启 (6)查看docker概要信息…...
mac环境,安装NMP遇到的问题
一 背景 项目开发中,公司项目需要使用本地的环境运行,主要是php这块的业务。没有使用docker来处理,重新手动撸了一遍。记录下其中遇到的问题; 二 遇到的问题 2.1 Nginx的问题 brew install nginx后,启动nginx,报错如下:nginx: [emerg] no "ssl_certificate" …...
Web Worker 与 SharedWorker 的介绍和使用
目录一、Web Worker1 Web Worker 是什么2 Web Worker 使用3 简单示例二、SharedWorker2.1 SharedWorker 是什么2.2 SharedWorker 的使用方式2.3 多页面数据共享的例子一、Web Worker 1 Web Worker 是什么 Web Worker是 HTML5 标准的一部分,这一规范定义了一套 API…...
React:Redux和Flux
React,用来构建用户界面,它有三个特点: 作为view,构建上用户界面虚拟DOM,目的就是高性能DOM渲染【diff算法】、组件化、多端同构单向数据流,是一种自上而下的渲染方式。Flux 在一个React应用中,UI部分是由无数个组件嵌套构成的,组件和组件之间就存在层级关系,也就是父…...
TypeScript 学习之Class
基本使用 class Greeter {// 属性greeting: string;// 构造函数constructor(message: string) {// 用this 访问类的属性this.greeting message;}// 方法greet() {return Hello, this.greeting;} } // 实例化 let greeter new Greeter(World);声明了一个Greeter类ÿ…...
doris - 数仓 拉链表 按天全量打宽表性能优化
数仓 拉链表 按天全量打宽性能优化现状描述优化现状描述 1、业务历史数据可以变更 2、拉链表按天打宽 3、拉链表模型分区字段设计不合理,通用的过滤字段没有作为分区分桶字段 4、拉链表表数据量略大、模型数据分区不合理和服务器资源限制,计算任务执行超…...
服务器虚拟化及优势
服务器虚拟化是从一台物理服务器创建多个服务器实例的过程。每个服务器实例代表一个隔离的虚拟环境。在每个虚拟环境中,都可以运行单独的操作系统。 1.更有效的资源调配 使用虚拟化技术大大节省了所占用的空间,减少了数据中心里服务器和相关硬件的数量。…...
华为ensp模拟校园网/企业网实例(同城灾备及异地备份中心保证网络安全)
文章简介:本文用华为ensp对企业网络进行了规划和模拟,也同样适用于校园、医院等场景。如有需要可联系作者,可以根据定制化需求做修改。作者简介:网络工程师,希望能认识更多的小伙伴一起交流,私信必回。一、…...
git命令篇(持续更新中)
首先介绍这个网页:https://learngitbranching.js.org/?localezh_CN --提交命令 git commit --创建分支 git branch <分支名> --切换分支 git checkout <分支名> --合并分支 (合并到主分支去,把我合并到谁的身上去) 自己写的分支合并到主线…...
用记事本实现“HelloWorld”输出
一、在任意文件夹中创建一个新的文本文档文件并写入以下代码 public class Hello{public static void main (String[] args){System.out.print("Hello,World!");} } 二、修改文件名称及文件类型为 Hello.java 特别注意:文件命名必须与代码中类的名称相同…...
Python基础1
1. 注释 单行注释:以#开头。一般建议注释和内容用空格隔开。 多行注释:以一对三个双引号括起来的内容是注释。“““示例注释”””。 2. 数据类型 验证数据类型的方法:type(被查看类型的数据)。 注意:…...
做网站要买什么/搜索百度网址网页
我想根据输入的文字,生成特定字体的图片,根据php.net上的样例,并不能生成正确的图片,请问该怎么办?样例中的图片:我的图片:代码:// Set the content-typeheader(Content-Type: image…...
网站建设有哪些技术/百度推广公司电话
在移动端需要安全算法时,直接使用开源库可能不合适(开源库都比较大,也可以自己抽取需要的代码),本Demo是根据AES的原理来实现算法,采用ECB/PKCS5Padding,实现短小精悍!! 注意:本算法…...
专业网站开发费用/链接点击量软件
前面学习了 at 命令,此命令在指定的时间仅能执行一次任务,但在实际工作中,系统的定时任务一般是需要重复执行的。而 at 命令显然无法满足需求,这是就需要使用 crontab 命令来执行循环定时任务。在介绍 crontab 命令之前࿰…...
视频的网站自助建站/广州做seo的公司
part 1--入门:1. xcode 版本下载 以及 iphone sdk 下载:最新版本在此下载:http://developer.apple.com/devcenter/ios/index.action其他版本请看http://connect.apple.com/cgi-bin ... 1.0.1.1.0.3.3.3.3.12. 入门教程:http://www…...
新开发网站/网络优化软件有哪些
可以对模型的查询和写入操作进行封装,例如:namespace appindexmodel;use thinkModel;class User extends Model{protected function scopeThinkphp($query){$query->where("name","thinkphp")->field("id,name");}p…...
清远建设工程招投标网站/seo流量是什么意思
练习7-8 方阵循环右移 (20 分) 本题要求编写程序,将给定nn方阵中的每个元素循环向右移m个位置,即将第0、1、⋯、n−1列变换为第n−m、n−m1、⋯、n−1、0、1、⋯、n−m−1列。 输入格式: 输入第一行给出两个正整数m和n(1≤n≤6&a…...