草庐IT

Qt优秀开源项目之十七:QtPromise

QtPromise是Promises/A+规范的Qt/C++实现。该规范的译文见附录。QtPromise基于Qt5.6及以上版本,当然也包括Qt6。github地址:https://github.com/simonbrunel/qtpromise新手导航:GettingStarted|QtPromiseAPI手册:APIReference,每个API都提供了示例。Promise是一种异步编程的解决方案,可以替代传统的解决方案——回调函数和事件。Promise的三个特点:☆对象的状态不受外界影响。☆一旦状态改变了就不会在变,也就是说任何时候Promise都只有一种状态。☆以同步的方式调用异步,通

【QT】TCP/UDP详解及实现

TCP/UDPTCP/IP模型TCP协议头部格式三次握手四次挥手UDP协议头部格式Socket编程tcpudp代码实现服务端:客户端:总结TCP/IP模型TCP模型是一个常见的网络协议参考模型,也称为TCP/IP模型或互联网模型。它是指TCP/IP协议族中的一组协议,用于在计算机网络中进行数据通信。TCP模型由四个层次组成,分别是:应用层(ApplicationLayer):应用层是最靠近用户的层次,为用户提供各种网络应用服务。包括常见的应用层协议,如HTTP、FTP、SMTP、DNS等。该层定义了应用程序之间的通信规则和数据格式。传输层(TransportLayer):传输层负责提供可靠的端

Qt 定时器 (QTimer)的2种使用方法

Qt中定时器的使用有两种方法,一种是使用QObject类提供的定时器,还有一种就是使用QTimer类。其精确度一般依赖于操作系统和硬件,但一般支持20ms。下面将分别介绍两种方法来使用定时器。方法一:使用QTimer定时器类(这种方法普遍使用)1、首先创建一个定时器类的对象QTimer*timer=newQTimer(this);2、timer超时后会发出timeout()信号,所以在创建好定时器对象后给其建立信号与槽connect(timer,SIGNAL(timeout()),this,SLOT(onTimeout()));3、在需要开启定时器的地方调用voidQTimer::start(

qt 菜单栏创建

.h文件内容:#pragmaonce#include#include"ui_QtWidgetsApplication2.h"#includeclassQtWidgetsApplication2:publicQMainWindow{  Q_OBJECTpublic:  QtWidgetsApplication2(QWidget*parent=nullptr);  ~QtWidgetsApplication2();   QStatusBar*statusbar;   QLabel*label;publicslots:   voidOnActionTest();private:  Ui::QtWid

Qt6之调用Windows下vc生成的动态链接库dll

Qt是跨平台工具,显然能和windows的动态库一起使用。在Windows操作系统上,库以文件的形式存在,并且可以分为动态链接库(DLL)和静态链接库两种。动态链接库文控以.dll为后缀名,静态链接库文控以.lib为后缀名。不管是动态链接库还是静态链接库,都是向它们的调用者提供变量、函数或举。实质上,windows系统库主要以dll动态库为主,所以会在C:\Windows\System32下有大量的dll结尾的库文件。⚠️windows下理论概念比较多适合萌新消化,大佬绕行! 一、简述动态链接库动态链接库的源码就是函数或类的具体实现,源码经过编译后会生成一个后缀名为dll的文件,这个文件就是动

Qt对话框——QInputDialog输入对话框

Qt对话框——QInputDialog输入对话框在Qt开发中,我们有时需要通过一个对话框获取用户的输入,而QInputDialog就是Qt框架提供的一种方便地弹出输入对话框并获取用户输入数据的方式。QInputDialog使用非常简单,我们可以通过访问不同的接口来弹出输入对话框获取多种类型的返回数据,比如单行字符串、整数、浮点数和多行文本等等。下面我们通过一个简单的示例来演示QInputDialog的用法:首先,在QtCreator中新建一个QtWidgetsApplication工程,并新建一个按钮用于触发显示输入对话框,代码如下所示:#include"mainwindow.h"#inclu

【鼠标在不点击的情况下,直接移动到QT控件上不显示提示信息】

鼠标在不点击的情况下,直接移动到QT控件上不显示提示信息  当你想用图标作为按钮时,为了让用户知道按钮的功能,这时候就会在QT控件上加上提示信息,在初始化时,使用QT自带的setToolTip方法即可:setMouseTracking(true);setToolTips("Descriptiveinformation");但有时明明已经调用了setToolTips方法,鼠标移动到QT控件上仍然不会有提示信息,这时候就需要具体分析下setToolTips方法是如何实现的,官方说明如下:Thispropertyholdsthewidget’stooltipNotethatbydefaulttool

QT通过QBreakpad捕捉崩溃

最近在公司项目上遇到程序运行时崩溃,也不好在log日志中定位。查找了资料发现,谷歌的一个开源项目Breakpad,统一了这三平台win、linux、mac生成dump的方式来捕捉崩溃。大致研究了一下,主要依赖一个静态库和几个头文件,我这边编译出来放到网盘上大家自行使用。链接:https://pan.baidu.com/s/19elsFxnKfzdNaX6cURruAw?pwd=JJLM提取码:JJLM 用法就是在工程文件pro里引入库:############forqBreakpad#############qBreakpad中需要使用到network模块QT+=network#启用多线程、异

Qt实现登录效果(超详细!超简单!)

title:Qt实现登录效果(超详细!超简单!)date:2022-8-13tags:学习C++Qtcategories:Qt:::tip🍓🍊从一个界面按登录跳转到另一个界面🍭🍓🍬:::效果图首先在登录界面输入正确的用户名和密码后点击登录,即可跳到第二个HelloWorld!界面!如何实现(按照我的步骤来,保证成功!)1.我的文件目录说明:在我的工程目录下面主要有三个源文件hello.cpp、login.cpp、main.cpp其关系是:main.cpp是主文件,login.cpp是登录界面的文件,点击登录后会跳转到hello.cpphelloworld页面然后Resources是我为工程添加

QT中使用ffmpeg的api进行视频的播放

在了解ffmpeg使用api进行视频的播放之前,我们首先了解一下视频的播放流程。一、视频的播放流程首先是我们最常见的视频文件,在播放流程中首先是要打开视频文件,将视频文件中的数据进行解封装,之后再将解封装之后的视频进行解码。解码之后的视频便是视频帧的数据,之后将视频帧数据一帧一帧的显示在显示器上。在使用api进行视频播放的时候也是通过这个流程。接下来我们看具体的实现。二、ffmpeg中的数据结构体在了解使用api之前,还需要先了解一下ffmpeg中的相关结构体,在了解了这些结构体之后,可以更容易的理解代码。AVFormatContext:此结构体存储音视频封装格式中包含的信息,并且这个结构体是