首页 > 其他分享 >【qt】QQ仿真项目1

【qt】QQ仿真项目1

时间:2024-09-28 21:52:35浏览次数:8  
标签:QQ 仿真 窗口 qt 标题栏 按钮 添加 样式表 基类

一览全局:在这里插入图片描述

QQ仿真项目

一.创建项目添加资源文件

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以修改为自己想要的名字.
在这里插入图片描述

在这里插入图片描述
报错没关系,打开属性设置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
能运行说明环境就打架好了.
在这里插入图片描述
现在开始添加资源文件
在这里插入图片描述
在这里插入图片描述

记得按crtl+s保存.
在这里插入图片描述

二.创建数据库

打开电脑的服务,启动MySQL
在这里插入图片描述
命令提示符中打开MySQL.

在这里插入图片描述
Navicat里面连接MySQL
在这里插入图片描述
点击测试连接,若成功点击确定.
在这里插入图片描述

新建一个数据库.

在这里插入图片描述
在这里插入图片描述

新建一个员工账户表.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
插入员工账户值.
在这里插入图片描述

新建一个公司部门表.

在这里插入图片描述
在这里插入图片描述
插入公司部门值.
在这里插入图片描述
新建一个员工信息表.

在这里插入图片描述
插入员工信息.
在这里插入图片描述

三.自定义标题栏Qt类

新建一个窗口基础类,窗口的共有属性写在这个里面.
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
登录窗口继承我们新建的类.
在这里插入图片描述
构造函数要构造其父类.
在这里插入图片描述
再新建一个标题栏类.Qt Widgets Class是有ui文件的,Qt Class没有.
在这里插入图片描述

在这里插入图片描述
设计TitleBarui文件.
在这里插入图片描述
我打不开文件,我靠( ‵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了,未完待续…

标签:QQ,仿真,窗口,qt,标题栏,按钮,添加,样式表,基类
From: https://blog.csdn.net/qq_74047911/article/details/142462389

相关文章

  • SimForPlc仿真设备联合西门子PLC1500进行液位PID控制
    SimForPlc仿真设备联合西门子PLC1500进行液位PID控制准备PLC编程软件 博途V15  TIAPortalV15.1仿真PLC    S7-PLCSIMAdvancedV4.0SP1PLC仿真设备SimForPlc仿真设备项目的具体要求通过SimForPlc仿真设备联合西门子PLC1500进行液位PID控制的练习,我们可以掌......
  • Electron慢,QT贵,有没有第三选择?试试Tauri
    桌面程序开发页面也面临着前端技术栈的选择,Electron、QT和Tauri算是各有千秋,Electron在处理大量文件时候,非常耗费资源,QT倒是没有这方面问题,但是收费忒贵了,Tauri作为后起之秀,有无弯道超车的机会呢?一、electron、qd和tauri的由来和基本信息1.Electron:-由来:Electron最初......
  • 项目实战:Qt+OSG爆破动力学仿真三维引擎测试工具v1.1.0(加载.K模型,子弹轨迹模拟动画,支持
    若该文为原创文章,转载请注明出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/142454993长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…Qt开发专栏:项目实战......
  • 【Qt】创建一个新项目 &&解析项目代码
    这里写目录标题1.QtCreator创建项目2.项目代码解析2.1main.cpp2.2widget.h2.3widget.cpp2.4.pro工程文件3.中间文件1.QtCreator创建项目首先我们要创建一个项目点击左上角的文件创建新文件选择Application中的QtWidgetsApplication方式进行创建新建项......
  • 【Qt】编写第一个Qt程序 && 对象树 && 内存泄漏问题探讨
    编写第一个Qt程序1.使用图形化界面生成2.使用代码生成3.对象树3.1什么是对象树3.2验证对象树4.解决编码问题1.使用图形化界面生成创建好一个项目后,我们可以点击widget.ui进入图形化界面设计,可以直接通过拖拽的方式进行添加。通过拖拽的方式进行设计此......
  • Qt源码编译-Ubuntu平台
    Qt源码编译-Ubuntu平台Qt官网已取消了Qt5.15版本二进制安装包。如果要安装Qt5.15需要下载源码自行编译安装或使用商业授权版本。Qt是一个功能强大的跨平台开发框架,支持从嵌入式系统到桌面应用程序的开发。如果你希望在Ubuntu平台上从源码编译Qt,这篇教程将带你一步步......
  • Qt面试题
    什么是Qt的元对象系统?点击查看代码Qt的元对象系统是Qt框架中一个核心的组成部分,提供了一种机制来拓展C++的功能,Qt的元对象系统(Meta-ObiectSystem)提供了对象之间通信的信号与槽机制、运行时类型信息和动态属性系统。元对象系统由以下三个基础组成。1.QObiect类是所有......
  • PyQt5 使用 QFrame 实现页面类抽屉式的进入与退出的动画
    PyQt5使用QFrame实现页面类抽屉式的进入与退出的动画当多个页面切换,但是又不想每个页面里的内容只是简单的出现与消失,则可以使用这个QPropertyAnimation动画代码结构本文中全部代码全在test_QFrame_Animation.py这一个文件中编码,步骤中有变动的地方会注释标注,无改动的不会重......
  • Qt - QObject设置对象名称和属性
    作用用来作为id选择器和属性选择器,来设置样式setObjectName方法用来设置对象的名字,不同对象可以重复label=QLabel()label.setObjectName("label")objectName方法获取对象的名字QStringstrobj=this->objectName();qDebug()<<"strobj="<<strobj;setProperty方法......
  • Matlab_与CANoe联合仿真方案基础环境搭建
    1、软件准备CANoe版本VectorCANoe11.0MATLAB 版本 MATLABR2021b2、CANoe中Matlab的驱动位置我的电脑安装位置:D:\ProgramFiles\VectorCANoe11.0\InstallerAdditionalComponents\Matlab\Vector_AddOn_Matlab_Interface_V604.exe有的人电脑安装位置:C:\ProgramFi......