当前位置: 首页 > news >正文

Qt实现仿微信在线聊天工具(服务器、客户端)V1_ 02

上一篇设计了登录和聊天窗口,并实现了窗口切换,本章将继续实现其他模块

本章内容

  1. 完善登录验证
  2. 实现自定义窗口的拖动效果

完善登录验证

对登录的输入框进行输入限定,这里我限制登录id为6位纯数字组合,密码长度不超过16位
设置代码我放在了构造函数里

LoginWindow::LoginWindow(QWidget *parent): QWidget(parent)
{ui.setupUi(this);connectSlots();//设置输入框的限制QRegExp rx("[1-9][0-9]{5}");	//不超过6位的纯数字idQRegExpValidator *pReg = new QRegExpValidator(rx, this);ui.lineEditUserID->setValidator(pReg);ui.lineEditPassword->setMaxLength(16);	//设置密码最大长度16
}

在登录按钮点击后,校验ID长度是否合法,不合法则进行提示

//登录按钮点击事件
void LoginWindow::slotLoginBtnClicked()
{//获取用户输入QString strID = ui.lineEditUserID->text();if (strID.size() != 6){QToolTip::showText(QCursor::pos(), QString::fromLocal8Bit("ID输入有误!"));return;}//验证账户有效性//关闭登录界面(调用关闭函数)slotCloseBtnClicked();//发送成功的信号emit signalLoginOK();
}

相关头文件

#include <QRegExp>
#include <QToolTip>

实现自定义窗口的拖动效果

新建一个窗口移动的类 MoveWindow,继承QWidget并重写鼠标移动事件
大致代码

class MoveWindow : public QWidget
{Q_OBJECTpublic:explicit MoveWindow(QWidget *parent = Q_NULLPTR);protected:/*** @brief 鼠标按下,准备拖动窗体* @param event*/void mousePressEvent(QMouseEvent *event);/*** @brief 鼠标移动,处理窗体拖动* @param event*/void mouseMoveEvent(QMouseEvent *event);/*** @brief 释放鼠标* @param event*/void mouseReleaseEvent(QMouseEvent *event);/*** @brief 获取可拖动控件,必须由子类指定* @return*/virtual QWidget*getDragnWidget() = 0;/*** @brief 判断鼠标点击的位置是否进入可拖动区域* @param widget 可拖动控件位置* @param point  鼠标点击位置* @return*/bool isPointInDragnWidget(const QWidget*widget, const QPoint &point);/*** @brief 标志是否移动窗体*/bool isMove;/*** @brief 鼠标按下去的点*/QPoint pressedPoint;
};

修改LoginWindow和ChatWindow父类为MoveWindow

.h
class LoginWindow : public MoveWindow
{Q_OBJECTpublic:LoginWindow(QWidget *parent = nullptr);~LoginWindow();.cpp
LoginWindow::LoginWindow(QWidget *parent): MoveWindow(parent)
{ui.setupUi(this);

同时实现基类中的虚函数 getDragnWidget()

protected:QWidget* getDragnWidget();
QWidget * LoginWindow::getDragnWidget()
{return this;
}

关于这里可以 参考我的另一篇博客,自定窗口的拖动

具体的实现根据自己的需要进行调整,不用照搬

相关文章:

Qt实现仿微信在线聊天工具(服务器、客户端)V1_ 02

上一篇设计了登录和聊天窗口&#xff0c;并实现了窗口切换&#xff0c;本章将继续实现其他模块 本章内容 完善登录验证实现自定义窗口的拖动效果 完善登录验证 对登录的输入框进行输入限定&#xff0c;这里我限制登录id为6位纯数字组合&#xff0c;密码长度不超过16位 设置…...

Direct local .aar file dependencies are not supported when building an AAR.

前言 起因&#xff1a;项目中含有视频播放功能&#xff0c;使用的是GSYVideoPlayer&#xff0c;因为公司网络问题经常依赖添加不了&#xff0c;所以将关于它的aar包全部下载下来直接本地依赖。 因为多个业务都可能涉及视频播放功能&#xff0c;为了复用&#xff0c;就想着将视频…...

【Java基础】day16

day16 一、switch-case 和 if-else 谁更快&#xff1f; switch-case 在 switch-case 中&#xff0c;case 的值是连续的话&#xff0c;会生成一个 TableSwitch 来进行优化&#xff0c;这样的情况下&#xff0c;只需要在表中进行判断即可。 这里使用 0-4 的连续值来进行测试 如…...

Neo4j | 一文入门Neo4j!

下面是一些基本的Cypher查询语句&#xff1a; 创建节点 CREATE (n:Person {name:Alice})这会创建一个标签为Person、属性name值为Alice的节点。 创建节点之间的关系 MATCH (a:Person {name:Alice}), (b:Person {name:Bob}) CREATE (a)-[:FRIEND]->(b)这会创建Alice和Bob…...

Python科研数据可视化

在过去的20 年中&#xff0c;随着社会产生数据的大量增加&#xff0c;对数据的理解、解释与决策的需求也随之增加。而固定不变是人类本身&#xff0c;所以我们的大脑必须学会理解这些日益增加的数据信息。所谓“一图胜千言”&#xff0c;对于数量、规模与复杂性不断增加的数据&…...

叫板IT部门和专业软件公司,低代码成为企业数字化的新选择

从2017年政府将“数字经济”写入工作报告&#xff0c;到今年两会将企业数字化转型列为重点议题&#xff0c;数字化的口号已喊了6年。政策对于数字化的支持越来越坚定&#xff0c;令人欣喜的是&#xff0c;越来越多具有远见卓识的企业已将数字化建设作为工作重心。 然而&#xf…...

leetcode 541. 反转字符串 II

题目描述解题思路执行结果 leetcode 541. 反转字符串 II 题目描述 反转字符串 II 给定一个字符串 s 和一个整数 k&#xff0c;从字符串开头算起&#xff0c;每计数至 2k 个字符&#xff0c;就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个&#xff0c;则将剩余字符全…...

java数据类型的转换以及精度丢失

java数据类型的转换以及精度丢失_long转double会丢失精度吗_ღLiJia的博客-CSDN博客 一.浮点类型在计算机当中的存储 float存储需求是4字节&#xff08;32位&#xff09;, 其中1位最高位是符号位&#xff0c;中间8位表示阶位&#xff0c;后32位表示值 float的范围: -2^128 ~ …...

网络通信基础 - 多路复用技术(频分多路复用、时分多路复用、波分多路复用)

文章目录 1 概述1.1 复用器 MUX 2 分类2.1 频分多路复用 FDM2.2 时分多路复用 TDM2.3 波分多路复用 WDM 1 概述 1.1 复用器 MUX 多路复用技术&#xff1a;把多个低速信道组合成一个高速信道的技术这种技术要用到两个设备&#xff0c;统称为 多路器&#xff08;MUX&#xff09…...

Baumer工业相机堡盟工业相机如何通过BGAPISDK的函数转换示Bayer格式为BGR8格式彩色图像(C++)

Baumer工业相机堡盟工业相机如何通过BGAPISDK的函数转换示Bayer格式为BGR8格式彩色图像&#xff08;C&#xff09; Baumer工业相机Baumer工业相机的Bayer彩色图像的技术背景Baumer工业相机通过BGAPI SDK在回调函数里显示Bayer彩色图像Baumer工业相机在BufferEvent转换Bayer格式…...

一块钱看Android Debug: avc denied 已存在的目录不能访问

某三方应用&#xff0c;使用了USB摄像头&#xff0c;启动应用后功能不能使用&#xff0c;看log有如下错误&#xff0c; denied后面{}里的是要执行的动作,比如append,open,execmod,link等等 scontext指的是域,对应的是te文件 上面报错这条对应te文件是untrusted_app.te, scontex…...

URL 转为QR code(二维码)

推荐一个良心的网站&#xff0c;能够免费地将url、text编码为二维码&#xff0c;而且还能设计logo、颜色等。 https://www.the-qrcode-generator.com/ 如下图&#xff1a; 可以自己定义logo、颜色&#xff1a; 还能查看扫描历史等统计信息&#xff1a; 上述所有功能都是免…...

CentOS软件那么老为什么大家还要用它?

作为一个专业的服务器系统&#xff0c;RHEL 系统理论上每一个软件包都有 RedHat 内部的人员负责维护&#xff0c;这个维护包括长期&#xff08;和系统生命周期一样长&#xff09;的开发、更新、测试、运维等。也就是说你能从 RHEL 系统源上获得的每一个软件包&#xff0c;出现问…...

聚观早报|飞猪:五一出游需求爆发;​特斯拉一季度盈利同比跌20%

今日要闻&#xff1a;飞猪&#xff1a;五一出游需求爆发&#xff1b;特斯拉一季度盈利同比暴跌20%&#xff1b;郑渊洁永远不再发表作品&#xff1b;KargoBot推出无人化自动驾驶卡车&#xff1b;中国6G通信技术研发取得重要突破 飞猪&#xff1a;五一出游需求爆发 4 月 19 日&a…...

Redis缓存雪崩、穿透、击穿

Redis缓存雪崩、穿透、击穿 解决方案正常的缓存流程Redis缓存雪崩Redis缓存雪崩解决方案 Redis缓存穿透Redis缓存穿透解决方案 Redis缓存击穿Redis缓存击穿解决方案 解决方案 布隆过滤器&#xff0c;分布式锁 正常的缓存流程 Redis缓存雪崩 Redis中的key大面积失效&#xff0…...

不要老盯着ChatGPT,这几家公司的产品同样不容小觑

Adept.ai 2022 年成立&#xff0c;致力于一款能够代替人类使用电脑、操控软件的AI助手&#xff0c;旗下模型 ACT-1 还处于雏形阶段&#xff0c;但根据官方示例&#xff0c;已经可以完成通过自然语言指令完成特定的任务。公司创始人曾任OpenAI的工程副总裁&#xff0c;后来进入谷…...

DataBinding 大坑总结(网上我暂时搜不到解决方法)

在使用多Module中使用DataBinding会引发一些奇怪的问题&#xff0c;最近好好的腾出时间来折腾这些奇怪的问题&#xff1a; 1&#xff1a;如果当Module启动DataBinding重启AS启动报错的话&#xff0c;就启用允许多行代码 android { defaultConfig {multiDexEnabled true} } de…...

Linux I/O复用函数的使用情况和select接口的介绍

I/O 复用使得程序能同时监听多个文件描述符&#xff0c;这对于提高程序的性能至关重要。通常&#xff0c; 网络程序在下列情况下需要使用 I/O 复用技术&#xff1a; 1.TCP服务器同时要处理监听套接字和连接套接字 2.服务器同时要处理TCP请求和UDP请求。 3.程序同时要处理多个套…...

leetcode:数字转换为十六进制数(详解)

前言&#xff1a;内容包括&#xff1a;题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读 题目&#xff1a; 给定一个整数&#xff0c;编写一个算法将这个数转换为十六进制数。对于负整数&#xff0c;我们通常使用 补码运算 方法。 注意: 十六进制中所有字…...

Android 10 设置人脸解锁时,锁屏显示人脸解锁图标

Android 10设置人脸解锁时&#xff0c;锁屏解锁图标不会显示人脸图标&#xff0c;若想显示人脸图标&#xff0c;可参考以下两点进行修改&#xff1a; 1.此处引用人脸图标资源&#xff0c;请参考如下修改&#xff1a; diff --git a/packages/SystemUI/src/com/android/systemui/…...

Wan2.1-umt5赋能微信小程序:智能对话功能开发全流程

Wan2.1-umt5赋能微信小程序&#xff1a;智能对话功能开发全流程 最近在做一个宠物社区的小程序&#xff0c;想给用户加个“智能宠物顾问”的功能&#xff0c;让用户能随时问问养宠问题。一开始觉得这得搞个复杂的后端和模型部署&#xff0c;后来发现用Wan2.1-umt5这个模型&…...

腾讯地图API实战:5分钟搞定经纬度录入与地图选点功能(Vue版)

腾讯地图API实战&#xff1a;5分钟搞定经纬度录入与地图选点功能&#xff08;Vue版&#xff09; 在当今的Web开发中&#xff0c;地图功能已成为许多应用的标配需求。无论是电商平台的店铺定位&#xff0c;还是社交应用的位置分享&#xff0c;甚至是企业内部系统的区域管理&…...

STM32F103C8T6接KY-9250陀螺仪,串口数据解析与姿态角计算全流程(附避坑点)

STM32F103C8T6与KY-9250陀螺仪实战&#xff1a;从硬件对接到姿态解算的完整指南 第一次拿到STM32开发板和KY-9250模块时&#xff0c;那种既兴奋又忐忑的心情记忆犹新——兴奋于即将实现酷炫的姿态检测功能&#xff0c;忐忑于不知从何下手的迷茫。本文将以手把手的方式&#xff…...

手把手教你用FastBlur打造高级感UI:从对话框背景到沉浸式音乐播放器的完整实现

用FastBlur打造高级UI的实战指南&#xff1a;从对话框到音乐播放器的设计进化 毛玻璃效果早已从iOS的视觉语言演变为现代移动应用设计的通用元素。这种半透明模糊效果不仅能提升界面层次感&#xff0c;还能在不分散用户注意力的情况下创造视觉焦点。本文将带你深入Android平台实…...

利用ADS实现多频段阻抗自动优化的实战指南

1. 从零开始理解多频段阻抗匹配 刚入行那会儿&#xff0c;我对阻抗匹配的理解还停留在"把50欧姆搞对就行"的层面。直到某次调试一个同时工作在900MHz和2.4GHz的双频天线时&#xff0c;才发现单频段匹配的思路完全不够用——调好了低频段&#xff0c;高频段性能就崩了…...

LingBot-Depth实操手册:Gradio API返回JSON结构解析与字段含义

LingBot-Depth实操手册&#xff1a;Gradio API返回JSON结构解析与字段含义 1. 引言&#xff1a;为什么需要了解API返回结构 当你使用LingBot-Depth处理深度图像时&#xff0c;最让人困惑的可能就是API返回的那一串JSON数据。这些数据到底代表什么&#xff1f;每个字段有什么含…...

QEMU监视器隐藏玩法:用TCP端口转发实现远程调试(2024最新版)

QEMU监视器隐藏玩法&#xff1a;用TCP端口转发实现远程调试&#xff08;2024最新版&#xff09; 在边缘计算和物联网设备调试中&#xff0c;经常需要跨越物理距离管理虚拟机。传统方式要求开发者必须物理接触设备或依赖图形界面&#xff0c;这在分布式场景中显得笨拙且低效。实…...

OpenClaw:AI 权限治理的核心问题

子玥酱 &#xff08;掘金 / 知乎 / CSDN / 简书 同名&#xff09; 大家好&#xff0c;我是 子玥酱&#xff0c;一名长期深耕在一线的前端程序媛 &#x1f469;‍&#x1f4bb;。曾就职于多家知名互联网大厂&#xff0c;目前在某国企负责前端软件研发相关工作&#xff0c;主要聚…...

OpenClaw对话增强:nanobot模型微调提升任务理解准确率

OpenClaw对话增强&#xff1a;nanobot模型微调提升任务理解准确率 1. 为什么需要专业场景的模型微调 在测试OpenClaw基础版本时&#xff0c;我发现一个明显痛点&#xff1a;当处理专业领域的自动化任务时&#xff0c;通用大模型经常出现"理解偏差"。比如在医疗文献…...

bean with name ‘sqlSessionFactory‘ defined in class path resource [com/baomidou/mybatisplus/autoconf

还得是豆包啊...