【qt】QQ仿真项目2

大家好,这里是国中之林!
❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←

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

QQ仿真项目

  • 一.主窗口的创建
  • 二.主窗口的ui设计
  • 三.初始化状态,等级,app,bottom按钮
  • 四.事件过滤器焦点改变搜索框样式
  • 五.数据库获取用户名和头像图片
  • 六.实现换肤功能
  • 七.搜索框层叠样式表bug
  • 八.自定义QTreeWidget根项
  • 九.自定义QTreeWidget子项
  • 十.根项子项连接信号与槽并取消焦点矩形框
  • 十一.添加系统托盘
  • 十二.效果演示

一.主窗口的创建

在这里插入图片描述

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

初始化一下BasicWindow里面的titleBar为空,不然为野指针.
在这里插入图片描述

这样不会让野指针去调用是否为最大化函数而崩溃.
在这里插入图片描述

二.主窗口的ui设计

注意添加动态属性来加载自定义的样式表.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

效果演示:
在这里插入图片描述

三.初始化状态,等级,app,bottom按钮

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

绘制状态按钮的图标.
在这里插入图片描述

添加app按钮和bottom的按钮并绘制图标.
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

连接信号槽,后面可以对按钮实现功能.
在这里插入图片描述

绘制等级按钮的图标,并设置定时器来进行等级升级.
在这里插入图片描述

这里是在一张包含1~9数字的图来进行绘制,所以需要计算像素来指定图的位置来绘制.
在这里插入图片描述

效果演示:
等级会随着时间的变化重新绘制.
在这里插入图片描述

四.事件过滤器焦点改变搜索框样式

bool eventFilter(QObject *watched, QEvent *event) override; 是 Qt 框架中的一个函数,用于自定义事件过滤器.
通过实现这个函数,可以在目标对象上监视特定事件,并决定是否要进一步处理该事件。

如果返回 true,表示事件已被处理,不会传递给对象的默认处理逻辑。
如果返回 false,则事件会传递给目标对象并按照常规处理。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五.数据库获取用户名和头像图片

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

记得调用.
在这里插入图片描述

都是根据我们登录时保存的employeeID来查找到对应的用户名和头像图片.
在这里插入图片描述

效果演示:

在这里插入图片描述
测试上一个焦点改变搜索框的样式.
当我点击搜索框时:
在这里插入图片描述

六.实现换肤功能

创建一个换肤的窗口继承基类窗口.

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

对其进行ui设计,bodyWidget用的空的网格布局,后面好向其添加label标签.
在这里插入图片描述

为了实现能对label标签的点击发出信号,定义一个继承自label的类,重写鼠标点击事件发出信号.
在这里插入图片描述

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

为了更好的兼容其他窗口对此信号的接收我们定义一个NotifyManager类.
在这里插入图片描述
在这里插入图片描述

采用单例模式来进行设计信号的转发.
在这里插入图片描述

发出信号,并将颜色保存到颜色配置文件.
下一次打开窗口读取的颜色也会变.
在这里插入图片描述

最后在基类窗口连接信号.
在这里插入图片描述

槽函数,保存颜色并加载样式表.
在这里插入图片描述

七.搜索框层叠样式表bug

如果提前点了一下搜索框,拥有焦点,再取消,这时候就被设置内联样式.
换肤是属性样式,优先级比内联样式低,所以无法到达换肤的目的.
在这里插入图片描述

当换肤时,发出信号调用槽更新样式.
在这里插入图片描述
在这里插入图片描述

现在就完美了.
在这里插入图片描述

八.自定义QTreeWidget根项

在这里插入图片描述

QLabel做为基类
在这里插入图片描述

动态属性来设置属性动画.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

重写绘制函数来绘制根项的文字和图形.
在这里插入图片描述

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

QTreeWidget里面添加QTreeWidgetItem,再在其中添加自定义的标签.
在这里插入图片描述

效果展示:
现在图片箭头是静态的,还没有连接信号槽去改变旋转的角度.
在这里插入图片描述

九.自定义QTreeWidget子项

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

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

十.根项子项连接信号与槽并取消焦点矩形框

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

效果演示:
在这里插入图片描述

但是点击item后会出现一个焦点矩形框.
在这里插入图片描述
将其取消.
在这里插入图片描述
现在的效果:
在这里插入图片描述

十一.添加系统托盘

系统托盘就是这个区域.
在这里插入图片描述

添加系统托盘类.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

初始化系统托盘的父部件并连接信号槽.
左键显示父部件.
右键显示菜单.
在这里插入图片描述

添加菜单类.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对菜单添加action,并连接信号槽.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

效果演示:
在这里插入图片描述

有了系统托盘,就可以不需要任务栏显示了,可以将其设置为工具窗口.
在这里插入图片描述

但是现在就会出现一个bug,Qt是当最后一个窗口关闭,应用程序就会退出,但是工具窗口不算,所以当其他窗口关闭完,应用程序就结束了.
在这里插入图片描述
但是现在又会出现一个问题,当我关闭登录窗口时,应用程序也没有退出.
解决如果发送信号的父对象是登录窗口就直接退出应用程序.
在这里插入图片描述
完善一下主窗口的最小化和关闭.
在这里插入图片描述

十二.效果演示

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/441118.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<Rust>iced库(0.13.1)学习之部件(三十一):picklist部件的使用及可变style设置

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 注:新版本已更新为0.13 概述 这是本专栏的第三十一篇,主要说明下…

俗人,精气神,歌曲《错的人》

精气神,在人体中,精指构成人体生命活动的各层次的有形元素,常呈固体或液体状态。 哲学前提:世界上的一切,从微观上讲,都是由精微物质构成的,比如基本粒子。 关于有形与无形、与主观关注点相关…

DHCP安装

步骤 1:安装DHCP服务器 在系统上安装DHCP服务。以下是安装命令: # 安装DHCP软件包 yum install dhcp步骤 2:配置DHCP服务器 安装完成后,需要配置DHCP服务器来绑定MAC地址和IP地址。 # 备份原始的DHCP配置文件 cp /etc/dhcp/dh…

迁移学习案例-python代码

大白话 迁移学习就是用不太相同但又有一些联系的A和B数据,训练同一个网络。比如,先用A数据训练一下网络,然后再用B数据训练一下网络,那么就说最后的模型是从A迁移到B的。 迁移学习的具体形式是多种多样的,比如先用A训练…

HCIA综合实验

实验步骤 1.划分网段 内网部分---三个大块 2.先配交换机 左边:3个vlan ,3个access,1个trunk 右边:2个vlan ,2个access,1个trunk 3.再配路由 3.1 r5先配接口ipg/0/0/0 口配子接口 g0/0/0.1-0.3 g0/0/1 …

【YOLOv8实时产品缺陷检测】

YOLOv8应用于产品缺陷检测实例 项目概况项目实现YOLOv8安装及模型训练关键代码展示动态效果展示 项目概况 本项目是应用YOLOv8框架实现训练自定义模型实现单一零件的缺陷检测,软件界面由PyQt5实现。 功能已正式使用,识别效果达到预期。 项目实现 项目…

手机误删照片?试试这5款免费数据恢复神器!

大家好!今天咱们来聊聊一个大家都关心的话题——免费数据恢复工具。不论是误删照片、视频,还是丢失重要文件,数据恢复都是个让人头疼的问题。但好消息是,现在有众多免费的数据恢复工具能帮助我们找回失去的数据。今天我就来为大家…

力扣16~20题

题16&#xff08;中等&#xff09;&#xff1a; 思路&#xff1a; 双指针法&#xff0c;和15题差不多&#xff0c;就是要排除了&#xff0c;如果total<target则排除了更小的&#xff08;left右移&#xff09;&#xff0c;如果total>target则排除了更大的&#xff08;rig…

pycharm 远程ssh时,mujuco提示mujoco.FatalError: gladLoadGL error

在ubuntu系统运行时完全没问题&#xff0c;但是使用pycharm远程ssh登录时就会提示这个。 解决方法&#xff1a; 1. 可以修改环境变量 2. export LD_PRELOAD/usr/lib/x86_64-linux-gnu/libstdc.so.6 参考【Mujuco】WSL2安装Mujoco用于python,遇到FatalError,以及图形驱动架构…

【Git原理与使用】远程操作标签管理

远程操作&&标签管理 1.理解分布式版本控制系统2.新建远程仓库3.克隆远程仓库4.向远程仓库推送5.拉取远程仓库6.配置 Git7.配置命令别名8.标签管理8.1创建标签8.2操作标签 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496;…

RTOS系统移植

一、完成系统移植 系统移植上官网寻找合适的系统包&#xff0c;下载后将文件移植入工程文件 二、创建任务句柄、内核对象句柄&#xff08;信号量&#xff0c;消息队列&#xff0c;事件标志组&#xff0c;软件定时器&#xff09;、声明全局变量、声明函数 三、创建主函数&#…

Vue2电商项目(七)、订单与支付

文章目录 一、交易业务Trade1. 获取用户地址2. 获取订单信息 二、提交订单三、支付1. 获取支付信息2. 支付页面--ElementUI(1) 引入Element UI(2) 弹框支付的业务逻辑(这个逻辑其实没那么全)(3) 支付逻辑知识点小总结 四、个人中心1. 搭建二级路由2. 展示动态数据(1). 接口(2).…

【计算机网络 - 基础问题】每日 3 题(二十九)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…

【Docker】03-自制镜像

1. 自制镜像 2. Dockerfile # 基础镜像 FROM openjdk:11.0-jre-buster # 设定时区 ENV TZAsia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 拷贝jar包 COPY docker-demo.jar /app.jar # 入口 ENTRYPOINT ["ja…

Redis:通用命令 数据类型

Redis&#xff1a;通用命令 & 数据类型 通用命令SETGETKEYSEXISTSDELEXPIRETTLTYPEFLUSHALL 数据类型 Redis的客户端提供了很多命令用于操控Redis&#xff0c;在Redis中&#xff0c;key的类型都是字符串&#xff0c;而value有多种类型&#xff0c;每种类型都有自己的操作命…

Redis篇(最佳实践)(持续更新迭代)

介绍一&#xff1a;键值设计 一、优雅的key结构 Redis 的 Key 虽然可以自定义&#xff0c;但最好遵循下面的几个最佳实践约定&#xff1a; 遵循基本格式&#xff1a;[业务名称]:[数据名]:[id]长度不超过 44 字节不包含特殊字符 例如&#xff1a; 我们的登录业务&#xff0…

Leetcode—76. 最小覆盖子串【困难】

2024每日刷题&#xff08;167&#xff09; Leetcode—76. 最小覆盖子串 C实现代码 class Solution { public:string minWindow(string s, string t) {int bestL -1;int l 0, r 0;vector<int> cnt(128);for(const char c: t) {cnt[c];}int require t.length();int m…

【实战教程】SpringBoot全面指南:快速上手到项目实战(SpringBoot)

文章目录 【实战教程】SpringBoot全面指南&#xff1a;快速上手到项目实战(SpringBoot)1. SpringBoot介绍1.1 SpringBoot简介1.2系统要求1.3 SpringBoot和SpringMVC区别1.4 SpringBoot和SpringCloud区别 2.快速入门3. Web开发3.1 静态资源访问3.2 渲染Web页面3.3 YML与Properti…

[SpringBoot] 苍穹外卖--面试题总结--上

前言 1--苍穹外卖-SpringBoot项目介绍及环境搭建 详解-CSDN博客 2--苍穹外卖-SpringBoot项目中员工管理 详解&#xff08;一&#xff09;-CSDN博客 3--苍穹外卖-SpringBoot项目中员工管理 详解&#xff08;二&#xff09;-CSDN博客 4--苍穹外码-SpringBoot项目中分类管理 详…