【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…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...

