【qt】QQ仿真项目1
一览全局:
QQ仿真项目
- 一.创建项目添加资源文件
- 二.创建数据库
- 三.自定义标题栏Qt类
- 四.加载样式表标题栏按钮的搭配
- 五.标题栏实现移动窗体
- 六.标题栏按钮连接信号槽
- 七.标题栏双击最大化和还原
- 八.基类窗口实现标题栏按钮信号
- 九.重写基类窗口绘图事件确保设置样式表生效
- 十.用户登录界面设计
- 十一.实现基类窗口的移动
- 十二.配置颜色信息文件
- 十三.登录窗口添加样式表
- 十四.获取圆头像
- 十五.记住密码功能
- 十六.Qt连接MySQL
- 十七.数据库验证账号密码
一.创建项目添加资源文件




可以修改为自己想要的名字.


报错没关系,打开属性设置




能运行说明环境就打架好了.

现在开始添加资源文件


记得按crtl+s保存.

二.创建数据库
打开电脑的服务,启动MySQL

在命令提示符中打开MySQL.

在Navicat里面连接MySQL

点击测试连接,若成功点击确定.

新建一个数据库.


新建一个员工账户表.




插入员工账户值.

新建一个公司部门表.


插入公司部门值.

新建一个员工信息表.

插入员工信息.

三.自定义标题栏Qt类
新建一个窗口基础类,窗口的共有属性写在这个里面.



登录窗口继承我们新建的类.

构造函数要构造其父类.

再新建一个标题栏类.Qt Widgets Class是有ui文件的,Qt Class没有.


设计TitleBar的ui文件.

我打不开文件,我靠( ‵o′)了

找到解决方案了.


找到Qt下的编译器下的designer.exe文件添加.


问题就解决了.

设置了2个label,4个pushButton.

添加公共接口,使其他窗口可以设置标题栏属性.


四.加载样式表标题栏按钮的搭配
添加一个样式表设置类.


定义为静态函数,方便类名直接调用.


定义宏函数,方便获取资源文件里的样式表文件路径.

在其他类调用静态样式表加载成员函数.

设置标题栏按钮显示.


设置默认显示一种按钮搭配,多一个枚举参数类型.


现在可以演示一下标题栏:


五.标题栏实现移动窗体
重写父类的鼠标事件函数.
void mousePressEvent(QMouseEvent*event)override;
void mouseMoveEvent(QMouseEvent*event)override;
void mouseReleaseEvent(QMouseEvent*event)override;


鼠标事件函数的实现

将标题栏添加到基础窗口中.

基类窗口设置为无边框的setWindowFlag(Qt::FramelessWindowHint);

登录窗口中调用从基类窗口继承的标题栏.


演示:

标题栏被移动到了基类窗口的左上角这个位置.因为无边框窗口,所以只有点击标题栏里面只能移动.

现在可以看到,标题栏的宽度和基类窗口的宽度不一样.
可以用重写绘图事件函数.


效果:

六.标题栏按钮连接信号槽
按钮点击的信号和槽,信号槽的连接都初始化在initConnect()里面.

记得要在init()里面调用.

可以信号连接信号,因为是外部调用,并不是标题栏调用.
最大化和还原按钮是变化的,所以设置的槽函数,但是还是要在槽函数中发出信号.
setVisible(false)是会隐藏组件的,如果在布局中,位置会被占!

效果:

七.标题栏双击最大化和还原
设置数据成员来保存还原窗体的位置和大小.

对其进行设置和获取.


重写鼠标双击事件,实现最大化和还原.


八.基类窗口实现标题栏按钮信号
添加槽函数,用于相应标题栏的信号.

先连接信号槽.

当最小化的时候,要判断窗口的类型,工具窗口是隐藏.


演示:
这是最大化时的截图,现在按钮就都可以实现对于操作了.

再设置一些共有槽函数,在继承中,最好析构函数加上virtual,删除父类时防止子类不析构.


九.重写基类窗口绘图事件确保设置样式表生效


十.用户登录界面设计
添加组件的名字要与css文件里面一样哦.
添加动态属性,用来确定是否添加样式表.

运行效果:

十一.实现基类窗口的移动


判断是否为最大化,最大化不允许移动.

虽然现在窗口可以移动了,但是移动标题栏会出现问题,因为两个鼠标事件都触发了.
不用调用父类的鼠标事件,加上event->accept()就可以了.

十二.配置颜色信息文件
添加一个配置文件类.


保存配置文件和获取配置文件.

在基类窗口中添加一个保存颜色的数据成员.


十三.登录窗口添加样式表


这是是根据动态属性值来是否设置背景颜色.


效果:


十四.获取圆头像

这里用了图片的叠加,用一个圆底QPixmap mask来进行叠加.



运行效果:

十五.记住密码功能
也是用的配置文件来保存和获取文件.







十六.Qt连接MySQL
创建一个Qt数据库类.

添加数据库模块.



数据库连接用单例设计模式.


连接数据库前可以先看看自己有的数据库驱动.
qDebug() << QSqlDatabase::drivers();
打开属性链接器系统里面的控制台,可以看到调试打印信息.

然后连接数据库.

在登录窗口调用一下.

运行结果:

十七.数据库验证账号密码

QSqlQuery类来查询语句.

可以用navicat里面的查询来确定代码里面的sql语句是否是正确的.

在登录按钮的槽函数调用.

现在的运行效果:

OK,到这里登录界面就差不多OK了,未完待续…
相关文章:
【qt】QQ仿真项目1
一览全局: QQ仿真项目 一.创建项目添加资源文件二.创建数据库三.自定义标题栏Qt类四.加载样式表标题栏按钮的搭配五.标题栏实现移动窗体六.标题栏按钮连接信号槽七.标题栏双击最大化和还原八.基类窗口实现标题栏按钮信号九.重写基类窗口绘图事件确保设置样式表生效十.用户登录界…...
Vue3:shallowRef与shallowReactive
目录 一.shallowRef 和 shallowReactive 1.shallowRef 2.shallowReactive 二.ref 和 reactive 1. ref 2. reactive 三.各自使用场景 1.shallowRef 2.shallowReactive 3.ref 4.reactive 四.shallowRef 使用 五.shallowReactive使用 六.效果 一.shallowRef 和 shal…...
django开发流程3(轮播图)
1.在models中创建一个模板 class Ads(models.Model):title models.CharField(verbose_name"标题", max_length30)image models.ImageField(verbose_name"广告图", upload_to"ads")url models.URLField(verbose_name"链接网址", de…...
MySQL的增删查改(基础)一
一.增 方式1(简写插入): 语法:insert into 表名 values(值,值,值……); 这里insert into 代表要插入一条新数据行,values后面就是该行的值,其中后面的值的…...
深度学习(入门)03:监督学习
1、监督学习简介 监督学习(Supervised Learning)是一种重要的机器学习方法,它的目标是通过“已知输入特征”来预测对应的标签。在监督学习中,每一个“特征-标签”对被称为样本(example),这些样…...
Django——admin创建和使用
1. Django Admin简介 Django Admin是Django框架自带的一个管理后台工具,它允许开发者通过一个直观的Web界面轻松地管理应用中的数据模型。Admin提供了模型的CRUD(Create,Read, Update, Delete)操作,以及数据的批量处理和搜索功能…...
鸿蒙开发(NEXT/API 12)【硬件(取消注册智慧出行连接状态的监听)】车载系统
取消注册智慧出行连接状态的监听。 接口说明 接口名描述[off] (type: ‘smartMobilityStatus’, smartMobilityTypes: SmartMobilityType[], callback?: Callback): void取消注册智慧出行连接状态的监听。 开发步骤** 导入Car Kit模块。 import { smartMobilityCommon } fr…...
JVM中的GC流程与对象晋升机制详解
一、垃圾回收的概念 1.1 什么是垃圾回收? 垃圾回收是自动回收不再使用的对象,从而释放内存的一种机制。通过GC,JVM能够动态地管理内存的分配与回收,避免内存泄漏和溢出。 1.2 GC的重要性 内存管理:GC自动处理对象的…...
SQL:如果字段需要排除某个值但又有空值时,不能直接用“<>”或not in
在 SQL 中,如果字段需要排除某个值但又有空值存在时,不能直接使用“<>”(不等于)或 NOT IN,是因为这些操作会把空值也考虑进去,但通常情况下可能并不希望空值被这样处理。 以下是一些解决方法&#…...
运放模块的选型参数
增益带宽积-----尤其重要: GWB 增益*带宽 压摆率: 高带宽的运放一般都是电流型运放: 注意压摆率计算公式里面的Vopp参数是放大后的电压最大值: 参数,布局一定参考数据手册!!!&…...
win10文件共享设置 - 开启局域网文件共享 - “您没有权限访问,请与网络管理员联系请求访问权限”解决方案
实现步骤: 1、在“网络和共享中心”关闭“密码保护的共享” 2、在“启用和关闭windows功能”中开启SMB文件共享支持。 3、在磁盘安全选项中添加“everyone”用户(重点!) 详细操作: https://blog.csdn.net/Skyirm/a…...
Go基础编程 - 16 - 方法
方法 概述1. 方法定义2. 值方法、指针方法3. 方法集合 匿名字段表达式自定义 error 上一篇:延迟调用(defer) 概述 1. 方法定义 func (receiver T) 方法名(参数列表) (返回值列表){}receiver:接收者参数名T…...
接口报错500InvalidPropertyException: Invalid property ‘xxx[256]‘,@InitBinder的使用
org.springframework.beans.InvalidPropertyException: Invalid property ‘xxx[256]’ of bean class [com.xxl.MailHead]: Invalid list index in property path ‘xxx[256]’; nested exception is java.lang.IndexOutOfBoundsException: Index: 256, Size: 256 从报错可以…...
Web 3.0 介绍
Web 3.0 是互联网的下一代发展阶段,通常被称为去中心化的网络。它与目前的 Web 2.0(以社交媒体、云计算和中心化平台为主导)不同,强调用户对数据和内容的更多掌控,依靠区块链、加密货币、去中心化应用(DApp…...
一起搭WPF界面之界面切换绑定
一起搭WPF界面之界面切换绑定 前言界面填充总结 前言 在主界面中定义Grid网格,界面网格化后,可以模块化搭建界面进行填充。 界面填充 总结 提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文仅…...
css 数字比汉字要靠上
这个问题通常是由于数字字体的下排的问题造成的,也就是数字的底部边缘位置比汉字的顶部边缘位置更靠下。为了解决这个问题,可以尝试以下几种方法: 使用CSS的vertical-align属性来调整对齐方式。例如,可以将数字的对齐方式设置为to…...
sentinel原理源码分析系列(三)-启动和初始化
本文是sentinel原理源码分析系列第三篇,分析sentinel启动和初始化 启动/初始化 sentinel初始化分两块,静态初始和适配器(包括aop) 静态初始 1. Root EntranceNode 如果我们用一栋楼类比资源调用,root EntranceNode好比一栋楼的大门&…...
计算机网络(九) —— Tcp协议详解
目录 一,关于Tcp协议 二,Tcp报头字段解析 2.0 协议字段图示 2.1 两个老问题 2.2 16位窗口大小 2.3 32位序号和确认序号 2.4 6个标记位 三,Tcp保证可靠性策略 3.1 确认应答机制(核心) 3.2 超时重传机制 3.3 …...
跨境支付专业术语
跨境支付 跨境支付是指支付或者清结算过程发生在两个及以上的国家地区之间、实现了资金跨国跨地区转移的支付行为。 境外本地支付 境外本地支付是指支付和清结算过程同时发生在单个国家或地区境内,资金在本国家或地区内部转移的支付行为。 国际汇款 国际汇款指跨…...
多级目录SQL分层查询
需求:有多级目录,而目录的层级是不固定的,如下图所示: 数据结构: sql语句: <select id"getList" resultType"com.hikvision.idatafusion.dhidata.bean.vo.knowledgebase.KnowledgeBaseT…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...

