QT学习(2)

article/2025/10/25 3:49:13

事件

事件与信号的关系??

点击按钮,也会进入到事件循环,处理槽函数

事件对操作系统而言

事件大部分都是由硬件触发;事件产生,操作系统是知道的

鼠标移动:

 

事件在qt中是由多态去实现的!!!

多态的条件:

  1. 继承,一个父类多个子类
  2. 父类中有虚函数,子类重写虚函数()
  3. 用父类的指针或者是引用去操作子类对象,调用虚函数时会触发多态

结论:

   是所有事件类的父类

   QWidget是所有控件类的父类

==》所有与用户交流互的控件类都是继承于QWidget

控件我们要去操作,必然会有事件发生,有事件发生就会有事件对象产生;控件就需要去执行事件处理函数。

总结:当用户去操作某一个控件的时候的,就会产生对应的事件,以及事件对象,控件的对象就会去执行对应的事件处理函数!如果子类中没有去重写对应事件的虚函数的,会执行父类原本的事件处理函数;如果控件子类重写了对应的事件处理函数,就执行子类自己的!

   事件的产生是随机的,什么时候操作什么时候产生!

 

参数是 父类类型的指针

  子类事件对象的地址 传给 QEvent * 调用控件对应的事件处理函数,实现多态

注意: event事件一般我们不需要重写,因为他内部实现的很完善!

事件产生》event做事件分发(根据事件类型)--》执行对应的事件处理函数(有重写走重写,没重写走父类)》发送对应的信号-》关联对应的槽函数做业务处理!!!

信号与事件的关系???

信号是在事件中被触发的!!!信号的底层就是事件;信号的本质就是事件

鼠标事件

 

 键盘事件

 

 如果一个Widget里面的所有的控件现在都要屏蔽到键盘输入事件,每一个控件都要被继承,然后在子类中重写 event分发事件函数;-重写对应的事件处理函数,什么都不做!

 

绘图事件查找什么时候会触发paintEvent事件

只要界面发生变化:放大还是缩小,都会触发这个绘图事件

只有按下左键才可以操作

 

 

  1. 网络编程—TCP

复习网络编程

  1. 使用Tcp搭建服务器流程:
  1. 创建套接字  socket  本质是文件,连通用户空间和内核空间
  2. 绑定Ip和port   bind 
  3. 创建监听队列  listen
  4. 等待连接  accept 之前三次握手已经完成,内核帮你已经完成了
  5. 收发消息,进行通信  
  6. 关闭连接    
  1. 使用Tcp搭建客户端的流程:
  1. 创建套接字 socket
  2. 连接  connect
  3. 通信
  4. 关闭连接

    1. 使用QT搭建客户端和服务端

Network模块

QTcpServer----- 创建监听套接字,程序运行起来的时候就已经存在了

QTcpSocket ------创建连接套接字, 客户端有多少个,连接套接字就有多少个

分析:QT服务器端如何搭建呢?

  1. 创建 QTcpServer对象
  2. 绑定Ip和port 并监听       QTcpServer::listen
  3. 建立连接: QTcpServer 就有会有个newConnection信号,槽函数里面就要接收当前连接的这客户端的QTcpSocket对象的地址

服务端收发: 服务端发送 点击按钮,槽里面write

            服务器接收呢?QTcpSocket 会有一个信号产生—readyRead(缓存区有新数据进来就会产生这个信号)

            槽里面  readData();

  1. 关闭连接

分析:QT客户端端如何搭建呢?

  1. 创建QTcpSocket对象
  2. 连接   connected()
  3. 通信
  4. 关闭连接
    1. 使用Qt做客户端  Linux做服务器

Linux的服务器:

   传输文件信息

百度网盘:

     下载:向服务器发起请求:: 文件名

           服务器解析请求,然后传输文件信息给客户端

     上传

通信协议的设计:

  1. 客户端发送请求: pic#文件名

服务器接收:     解析  pic  文件名 -à获取文件大小===》

                 # 替换成\0

                 然后在循环发送图片的数据到缓存区 send   1024

  1. 服务器如何发数据给客户端:

反馈第一部分数据给客户端:pic_ack#图片大小

第二部分是文件的详细数据

  1. 客户端如何接收: readyRead---》readData

      <1>.先接收 服务器反馈的第一部分数据

      <2>.只要接收图片信息就可以了   

               何时接收图片信息结束:

                 判断接收到的数据的大小和图片的大小是否一样,如果一样,接收完毕,在界面上要展示图片信息

Read  或是readAll            

                               

线程

进程中有线程,同步去执行多任务。线程开销比较小

使用线程:

   创建线程

   执行线程的处理函数 ---回调函数

   线程退出  

在QT中使用线程

  1. 引入QThread线程类---run—执行线程对应的业务
  2. 继承于QThread类写一个线程类
  3. 重写run线程执行函数
  4. 创建线程类的对象
  5. 启动线程   start()--》自动的调用run函数
  6. 线程退出   quit
  7. 线程回收   wait

项目打包步骤:

  1. 将工程的运行模式由debug改成release 发布版本
  2. 构建目录记得取消

 

  1. 运行一下,保证程序是没有报错或者异常的

注意:在整个程序中特别是线程中不要出现空循环,尽量增加一个qdebug的输出

所有的数据成员变量记得在构造中初始化

  1. 找到工程中 release文件夹中的exe 拷贝到一个bin文件夹中
  2. 将工程中有引入过的图片资源、数据库相关的等都拷贝到 bin文件夹中

 

  1. 切换到bin目录下
  2. 输入 windeployqt  exe的名称
  3. 回车
  4. 打包完成,点击 exe肯是否可以正常运行

http://chatgpt.dhexx.cn/article/nqSd5AvB.shtml

相关文章

Qt 进阶之路

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 古语有云&#xff1a;“工欲善其事&#xff0c;必先利其器”。一件好的开发工具可以帮助开发者快速、准确的完成任务。博主主要从…

Qt 入门学习路线

参考书目 《C GUI Qt4编程》 一、Qt框架概述 1. 什么是Qt? Qt是一个用C编写的、成熟的、跨平台的GUI工具包&#xff0c;它是挪威Trolltech公司的产品&#xff0c;该公司为商业市场开发、销售和支持Qt及其相关软件。 Qt作为一个出色的软件框架&#xff0c;除了为应用程序提供…

《Qt基础教程之Qt学习之路》

在Qt开源社区中&#xff0c;有一个很好的Qt教程&#xff0c;叫做《Qt 学习之路》&#xff0c;下面是它的链接和目录。 链接地址&#xff1a;http://www.qter.org/thread-629-1-1.html 评论区说上面这个地址打不开&#xff0c;有可能没人管理了。可以试一下面的&#xff1a; h…

Qt学习之路 (一)概述

Qt&#xff08;官方发音 [kju:t]&#xff0c;音同 cute&#xff09;是一个跨平台的 C 开发库&#xff0c;主要用来开发图形用户界面&#xff08;Graphical User Interface&#xff0c;GUI&#xff09;程序&#xff0c;当然也可以开发不带界面的命令行&#xff08;Command User …

QT学习之路

文章目录 一、QT简单介绍二、.pro文件介绍三、 命名规范和常用快捷键以及QPushButton简单使用登录窗口布局控件--按钮组其他常用控件介绍自定义控件封装Qt中的鼠标事件定时器一定时器二event事件分发器事件过滤器绘图事件绘图高级设置绘图设备QFile文件读写操作QFileInfo文件信…

在自己电脑上搭建一个FTP服务器

在自己电脑上搭建一个FTP服务器 因为项目需要&#xff0c;第一次搭建FTP&#xff0c;也是在博客上找的经验&#xff0c;写这篇博客&#xff0c;主要是想记录一下&#xff0c;留个笔记&#xff0c;以防后面需要。 本文是在不借助工具的情况下在自己电脑上搭建FTP服务器。我的是w…

搭建自己本地的IIS服务器

在工作中有时候不想买服务器&#xff0c;这个时候就需要将自己的电脑搭建成服务器。如何搭建呢&#xff1f;其实很简单&#xff0c;以下几步教你搞定。 1. 打开控制面板(window图标直接输入控制面板(control)), 找到程序->程序与功能->启用或关闭Windows功能。 2.找到“…

阿里云服务器如何搭建ip

很多客户的业务要求需要多个ip 来完成业务要求。大家认为的每个服务器只有一个公网ip&#xff0c;那么如何实现多个ip呢&#xff1f;怎样来部署呢&#xff1f; 根据自己需求选择服务器&#xff0c;选购的过程中需要注意的是&#xff1a;实例的网络类型必须是专有网络&#xff…

搭建MQTT服务器

搭建MQTT服务器 一、准备工作二、版本选择三、安装四、遇到的一些问题&#xff1a; 一、准备工作 1.查看&#xff08;Ubuntu&#xff09;系统版本&#xff1a; 使用命令&#xff1a;lsb_release -a 。 2、查看服务器的内核&#xff08;CPU架构&#xff09;&#xff1a; 我使…

域控服务器搭建

系统&#xff1a;windows server 2012 R2 一、 更改为固定IP 二、 修改计算机名称&#xff08;修改完成后重启&#xff09; 三、 打开服务器管理器&#xff0c;找到右上角【管理】-【添加角色和功能】 四、 这里直接点击下一步 五、 默认选择第一个&#xff0c;然后点击下一…

Nginx搭建服务器

第一步&#xff1a;下载安装包 Nginx下载地址 第二步&#xff1a;解压到合适的位置&#xff0c;修改配置 我这边是解压到D:\Program Files (x86)\nginx-1.21.6目录下&#xff0c;然后打开conf文件夹找到nginx.conf配置文件&#xff0c;用Notepad打开 修改下面几个配置即可搭…

搭建自己的服务器代理 yyds

一.购买需要搭建的服务器 为了方便自己搭建使用&#xff0c;直接来到阿里云购买轻量级服务器 点击跳转后&#xff0c;当前界面为服务器配置界面&#xff0c;对于第一次搭建建议购买24元/月的就可以&#xff0c;其次是区域必须为香港只有香港才可以连接到外网&#xff0c;镜像…

搭建文件服务器

文件服务器&#xff0c;又称档案伺务器&#xff0c;是指在计算机网络环境中&#xff0c;所有用户都可以访问的文件存储设备。 下面是搭建文件服务器的步骤&#xff1a; 1.打开Windows服务管理器<仪表盘&#xff0c;选择“添加角色和功能” 2.到这里选择文件服务器相应功能…

家庭宽带搭建服务器

家庭宽带搭建服务器 一、获得公网ip 如果是电信或者联通宽带可以打客服申请公网在线&#xff0c;绝大部分都能通过&#xff0c;理由可以说装监控或者玩游戏。移动宽带目前没用过就不讨论了。 **注意&#xff0c;这里的公网ip是动态公网ip&#xff0c;就是说会不定时更换。**…

搭建国外服务器

搭建国外服务器 学习内容&#xff1a; Namesoil 域名购买配置Cloudflare内容分发购买服务器掌握循环语句 Namesoil 域名购买 网站连接&#xff1a;https://www.namesilo.com/ 登录 搜索自己想要的网址名称 加入购物车 前往购买 支付完成后配置域名 查看域名 对域名进行DNS设…

虚拟手游服务器,自己搭建手机游戏服务器

自己搭建手机游戏服务器 内容精选 换一换 本文介绍了云手机CPH产品新特性和对应的文档动态,新特性将在各个区域(Region)陆续发布,欢迎体验。 部署游戏应用前,您需要准备硬件以及华为云的环境,主要包括以下内容:硬件环境:您需要准备一台带有显卡的Windows机器,硬盘至少20…

搭建自己的云服务器

搭建云服务器 本人学生一位&#xff0c;经常需要使用服务器进行软件测试&#xff0c;每次都需要搭建虚拟机很麻烦&#xff0c;所以找了一台云服务器&#xff0c;abeiyun云服务器 有了服务器后就可以搭建自己的云服务器了 安装系统 本人采用的是Ubuntu16.04版本的系统&#x…

Linux搭建服务器

文章目录 Linux搭建服务器1.基础环境配置1.1配置centos71.2安装xshall1.3安装xftp7 2.配置jdk 1.8第一步 卸载系统自带的OpenJDK以及相关的java文件第二步 下载最新稳定JDK第三步 解压JDK第四步 配置JDK环境变量第五步 让刚刚设置的环境变量生效并检查是否安装成功 3.配置tomca…

Git服务器搭建简明教程

1前言 本文详解在Ubantu 16下搭建Git服务器&#xff0c;力求让读者知其所以然&#xff0c;仅需安装Git和ssh&#xff0c;而无需其他软件。 2服务器搭建 在真实服务器或虚拟机里操作均可。另外&#xff0c;如果用VMware Workstation 16 Player的话&#xff0c;默认不用配置虚拟…

自己搭建微信小程序服务器,微信小程序搭建自己的Https服务器

一、注册微信小程序 进入微信公众平台,使用邮箱账号,选择注册小程序账号。一个邮箱只能注册一个类型的微信账号(订阅号、服务号、小程序)。 二、搭建Https服务器 1、域名注册 1.1、登录腾讯云平台,并注册账号。 1.2、选择“云产品”—”域名服务“—”域名管理" 1.3、选…