QT 网络聊天室简易版

news2024/9/22 19:24:56

视频:qt开发网络聊天w室软件3.4界面开发_哔哩哔哩_bilibili

目录

UI部分

设计稿图

放置控件

界面美化

拖动窗体

设置界面

网络部分

配置对话框

多项目结果和服务器端设计

客户端框架开发


UI部分

设计稿图

放置控件

界面美化

现在我们把窗体自带的标题栏给去了,用我们自己画的.我们在调用窗口这里调用setWindowFlags()函数,它利用有个隐藏标题栏方法Qt::FramelessWindowHint

 

拖动窗体

我们需要重写几个虚函数:

    virtual void mousePressEvent(QMouseEvent *event);   //响应鼠标点击
    virtual void mouseReleaseEvent(QMouseEvent *event); //响应鼠标离开
    virtual void mouseMoveEvent(QMouseEvent *event);    //响应鼠标按住窗体移动

这样就可以拖动窗体了:

设置界面

新建一个Dlg文件,名字为Dlg_setting,如下:

 把我们的设置按钮重名为btn_set,然后转到槽:

然后调用我们的dlg_setting界面:

void cell_Main::on_btn_set_clicked()
{
    Dlg_setting dlg;
    dlg.exec();
}

此时就可以通过点击设置按钮打开设置界面了吗               

新增一个清屏按钮: 

网络部分

首先需要在Pro文件中加载socket模块:

QT       +=network

配置对话框

在QDialog类下的QWidge类里有个虚函数showEvent(),我们需要重写这个虚函数

在dlg_setting.cpp文件里重写showEvent虚函数,这样我们就可以在点击设置的时候打印出我们的地址

void Dlg_setting::showEvent(QShowEvent *event)
{
    auto l=QNetworkInterface::allAddresses();
    for(auto it:l)
    {
        qDebug()<<it.toString();
    }
}

现在我们在我们的电脑上模拟两个客户端,一个服务端.我们自己来配一下地址:

在控制面板的网络连接里,选择我们的以太网,在属性的里选择ipv4,在高级选项里新增两个客户端ip地址,一个服务器端ip地址:

此时再调用showEvent(函数),发现我们的自己配置的地址和端口号就显示出来了:

 然后我们把我们配置的地址给 加载进我们ui界面ip地址的下拉列表框里:


void Dlg_setting::showEvent(QShowEvent *event)
{
    // 清空下拉框中的IP地址列表
    ui->cb_ips->clear();
    
    // 获取所有网络接口的地址列表
    auto l = QNetworkInterface::allAddresses();
    
    // 遍历所有网络接口的地址
    for (auto it : l)
    {
        // 打印出所有地址,调试用,可以注释掉
        // qDebug()<<it.toString();
        
        // 检查地址是否为IPv4类型
        if (QAbstractSocket::IPv4Protocol == it.protocol())
        {
            // 如果是IPv4地址,则添加到下拉框中
            ui->cb_ips->addItem(it.toString());   
        }
    }
}

多项目结果和服务器端设计

我们创建一个根文件夹qtalk,里面放客户端和服务器端.客户端就是我们上面写的,服务器端不用Ui界面,创建一个控制台文件即可

qtalk.pro文件内容如下:

客户端框架开发

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件设计之MySQL(1)

软件设计之MySQL(1) 此篇应在JavaSE之后进行学习: 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 Navicat可以在软件管家下载 使用navicat连接mysql数据库创建数据库、表、转储sql文件&#xff0c;导入sql数据 学习内容&#xff1a; 数据库概述表、…

6.IIC

理论 参考51单片机IIC理论&#xff1a;链接 在起始信号后必须发送一个7位从机地址 1位方向位&#xff0c;用“0”表示主机发送数据&#xff0c;“1”表示主机接收数据 代码编写 IIC三个模式配置 IIC(阻塞模式)配置 主要方式 IIC(中断模式)配置 IIC(DMA模式)配置 阻塞模式 mi…

智源研究院举办第一期数据与行业应用Workshop

近日&#xff0c;北京智源人工智能研究院联合中国互联网协会人工智能工委会、中国AIIA联盟数据委员会、CSDN举办了以“行业革新&#xff0c;数据先行”为主题的第一期数据与行业应用Workshop。来自智源研究院、中国信息通信研究院、航天信息技术有限公司、北京市科学技术研究院…

学习记录第二十七天

进程 wait函数 功能 等待子进程结束&#xff1a;父进程调用wait函数后&#xff0c;会暂停执行&#xff0c;直到它的某个子进程结束。收集子进程状态&#xff1a;当子进程结束时&#xff0c;wait函数会返回子进程的终止状态&#xff0c;包括是正常终止还是被信号终止等信息。…

单链表leetcode刷题/中(C语言版)

目录 题目1&#xff1a;合并两个有序链表 题目2&#xff1a;分割链表 题目3&#xff1a;随机链表的复制 “单链表leetcode刷题/上”的链接&#xff1a;https://blog.csdn.net/2302_80297338/article/details/140409360?spm1001.2014.3001.5501 题目1&#xff1a;合并两个有…

Ecovadis认证评估的四个方面 Ecovadis评估结果呈现形式

Ecovadis的认证过程严谨&#xff0c;基于国际公认的标准和准则进行评估。获得Ecovadis认证的企业&#xff0c;在社会责任、环境保护、商业道德和可持续采购等方面的表现得到了专业认可&#xff0c;这有助于提升企业的信誉度和透明度&#xff0c;增强利益相关者的信任。 Ecovad…

【CTF | WEB】003、攻防世界WEB题目之xff_referer

文章目录 xff_referer题目描述:解题思路&#xff1a;XFF与Referer基本了解1. XFF&#xff08;X-Forwarded-For&#xff09;&#xff1a;2. Referer&#xff1a;简单总结&#xff1a; 解题实操&#xff1a; xff_referer 题目描述: X老师告诉小宁其实xff和referer是可以伪造的。…

在 Linux 系统中下载 Python 并配置环境

哈喽&#xff0c;大家好&#xff0c;木易巷来啦&#xff01; 在 Linux 系统中下载 Python 并配置环境&#xff0c;主要包含以下几个核心步骤&#xff1a; ▍1、安装 Python 多数 Linux 发行版已预装 Python&#xff0c;但您可能需要安装不同版本或更新现有版本。 打开终端。 …

SpringBoot(Ⅰ)——HelloWorld和基本打包部署+Pom依赖概述+@SpringBootApplication注解+自动装配原理+约定大于配置

前言 如果SSM学的比较好&#xff0c;那么SpringBoot说白了就两件事:约定大于配置和自动装配 SpringBoot不会提供任何的功能拓展&#xff0c;完全依赖我们手动添加 所以SpringBoot的本质是一个依赖脚手架&#xff0c;可以快速集成配置各种依赖 1.1 SpringBoot相关依赖 创建…

失败:Windows--WSL2--Ubuntuon--Docker

编写目的&#xff1a; 在Windows上安装Docker&#xff0c;用Docker安装Gitlab、Jenkins等软件。 文章记录一下Windows上安装Docker的过程。 参考文档&#xff1a; 旧版 WSL 的手动安装步骤 | Microsoft Learn 下面用"参考文档"代替 目录 第一步&#xff1a;启…

学习计算机网络(三)——IP地址

一、IP协议&#xff08;IPV4、IPV6&#xff09; 表示形式&#xff08;两种&#xff09;&#xff1a; 点分十进制、二进制 地址被点分为4个部分&#xff0c;每个部分8位&#xff0c;总共32位。 A、B、C类地址都是单播地址&#xff08;一对一通信&#xff09;&#xff0c;D类…

谷粒商城实战笔记-175~177-商城业务-检索服务-检索查询接口开发

文章目录 一&#xff0c;175-商城业务-检索服务-检索查询参数模型分析抽取二&#xff0c;176-商城业务-检索服务-检索返回结果模型分析抽取三&#xff0c;177-商城业务-检索服务-检索DSL测试-查询部分四&#xff0c;178-商城业务-检索服务-检索DSL测试-聚合部分问题记录解决方案…

redis散列若干记录

字典 redis本身使用字典结构管理数据 redis使用hash表实现字典结构 使用了什么hash算法 使用SipHash算法&#xff0c;该算法能有效防止Hash表碰撞&#xff0c;并有不错的性能 hash冲突怎么解决 使用链表法解决hash冲突 hash表如何扩容 渐进式扩容&#xff0c;不会引起线程长期阻…

趣味算法------可截断素数

目录 题目描述&#xff1a; 思路解析&#xff1a; 质数判断函数&#xff1a; 反转函数&#xff1a; 右截断素数判断函数&#xff1a; 左可截断素数&#xff1a; 具体代码&#xff1a; 题目描述&#xff1a; 左截断素数是不包含 0 位的素数&#xff0c;当连续删除第一个数…

大四生都在的用8款AI论文生成器在线网站!

在当前的AI技术浪潮中&#xff0c;智能AI写作工具已经成为了学术研究和论文撰写的重要助手。对于大四生来说&#xff0c;选择合适的AI论文生成器可以大大提高写作效率和质量。以下是8款值得推荐的AI论文生成器在线网站&#xff1a; 一、千笔-AIPassPaPer 这是一款功能全面且高…

花几千上万学习Java,真没必要!(四十六)

Lambda表达式&#xff1a; 测试代码1&#xff1a; package test.lambda; public class LambdaDemo { // 实现Runnable接口的类 static class MyThread implements Runnable { Override public void run() { System.out.println("线程运行中&#xff1a;通过实现Runn…

【智能流体力学】ANSYS Fluent流体仿真基础、深度学习驱动思想及其CAX计算机辅助集成技术

目录 一、CAX计算机辅助集成技术二、计算机辅助工程(CAE)三、SCDM (Species Concentration Display Model) 显示和分析物质浓度分布的模型1. **SCDM概述**2. **主要功能**3. **功能特点**4. **使用步骤**5. **应用实例**6. **优点与限制**四、行业应用五、Fluent 软件功能1. …

Datawhale AI 夏令营 第四期 AIGC Task2

活动简介 活动链接&#xff1a;Datawhale AI 夏令营&#xff08;第四期&#xff09; 以及AIGC里面的本次任务说明&#xff1a;Task 2 精读代码&#xff0c;实战进阶 和上次任务一样&#xff0c;链接里的教程非常详细&#xff0c;对小白非常友好&#xff0c;从使用AI助手理解…

网工内推 | 网络、集成工程师,最高17K,NP以上认证优先

01 广东南方新媒体股份有限公司 &#x1f537;招聘岗位&#xff1a;网络工程师 &#x1f537;岗位职责&#xff1a; 1、负责基础设施运维管理&#xff0c;包括机房环境设备、网络设备、安全设备与服务器等&#xff0c;负责机房设备上架、下架、位置调整、布线等的常规操作。…

day36——homework

二、基于UDP的TFTP文件传输 1&#xff09;tftp协议概述 简单文件传输协议&#xff0c;适用于在网络上进行文件传输的一套标准协议&#xff0c;使用UDP传输 特点&#xff1a; 是应用层协议 基于UDP协议实现 数据传输模式 octet&#xff1a;二进制模式&#xff08;常用&am…