当前位置: 首页 > 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/…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...