自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(107)
  • 资源 (11)
  • 收藏
  • 关注

原创 Qt开发之踩雷日记

报错信息:C:\Users\MSI-NB\Desktop\03_SignalAndSlot\SubWidget.cpp:4: error: C2533: “SubWidget::{ctor}”: 构造函数不能有返回类型但构造函数中并没有返回类型啊??原因:定义类的时候没有加 ;构造函数默认把整个类作为返回值了。报错信息:C:\Users\MSI-NB\Desktop\03_SignalAndSlot\SubWidget.h:8: error: C2011: “SubWidge..

2020-07-07 10:56:27 1620

原创 PyInstaller打包Django项目生成exe文件

打包的时候就会默认使用全局的 Python 环境,在没有虚拟环境的情况下运行项目可能会有一些潜在的问题,比如我在其它项目中需要安装某些依赖,但跟当前项目所需的依赖发生了冲突。当你看到这个,说明打包成功了,dist 目录下也生成了 spec 文件同名的文件夹,可执行程序就在这个文件夹里,且运行程序所需要的依赖都在 _internal 这个文件夹里。正常情况下,这将在 dist 目录中生成一个包含可执行文件的文件夹,我们需要的打包后的 exe 程序就在这个文件夹中,但是事实上并没有那么顺利。

2024-01-05 17:32:03 970

原创 windows+django+nginx部署静态资源文件

平台:windows。

2024-01-04 17:49:35 1313

原创 Qt 数据库QSqlDatabase使用记录

记录一些在QT中使用QSqlDatabase操作数据库时,需要注意的地方。

2023-12-15 14:44:31 237

原创 Qt 鼠标点击事件穿透

【问题描述】在近期开发的过程中遇到这样一个场景:透明的子窗口覆盖于父窗口之上,但需要父窗口中的部件对鼠标点击事件进行正常的响应。正常情况下,由于子窗口覆盖于父窗口之上,鼠标点击事件会被子窗口中的部件获取,而不会被父窗口中的部件获取到,要解决这个问题,就需要让鼠标点击事件穿透子窗口,下发到父窗口的对应部件中。【解决思路】要实现事件的穿透,最关键的就是setAttribute(Qt::WA_TransparentForMouseEvents, true);的使用。这个方法能将当前窗口及其子部件的鼠标事

2022-01-10 22:58:30 8195 4

原创 Qt TreeView选中节点取消背景色

改动前未选中节点时选中节点时会发现虽然已经给TreeView::item:selected和TreeView::branch:selected都设置了background:transparent,但选中节点时依然带有默认的背景色改动后最后修改了TreeView的show-decoration-selected属性,莫名地解决了QTreeView { border:none; background: #0D202D; show-decoration-selected:

2021-12-01 15:35:12 1242

转载 Qt 图片与base64互转

图片转base64QImage image(":/image/wrong");QByteArray ba;QBuffer buf(&ba);image.save(&buf, "png");qDebug() << ba.toBase64();buf.close();base64转图片QString p_b;//base64字符串QPixmap image;image.loadFromData(QByteArray::fromBase64(p_b.toLocal

2021-11-29 15:47:12 542

原创 JavaScript 各种进制间的转换

目录十进制与十六进制的转换十进制与二进制的转换二进制与十六进制的转换十进制与十六进制的转换十进制转十六进制//number.toString(radix);//radix范围2~36,不写就是十进制var num = 255;console.log(num.toString(16));// 十进制转十六进制console.log(num.toString(16).toUpperCase());// 十进制转十六进制,再转大写十六进制转十进制//parseInt(string, radix

2021-10-27 12:05:40 789

原创 JavaScript 浮点数与二进制之间的转换

目录二进制转浮点数浮点数转二进制二进制转浮点数单精度binary_to_float(data){ let buf = new Uint8Array(data); buf.reverse(); let buf32 = new Float32Array(buf.buffer); return buf32[0];}双精度binary_to_double(data) { let buf = new Uint8Array(data); buf.rever

2021-10-27 11:02:25 1583 1

原创 Qt 界面实现的一些小技巧【更新中】

分割线的实现QFrame * line = new QFrame();line->setFrameShape(QFrame::HLine);line->setFrameShadow(QFrame::Sunken);QLabel适应文字内容大小QLabel label;label.setText("label");label.adjustSize(); label.setFixedWidth(label.width());label.setFixedHeight(labe

2021-07-08 17:17:45 526

原创 yaml-cpp的编译与使用

编译环境Windows10VS2019cmake-3.19.8-win64-x64准备工具yaml-cpp源码 点此下载yaml-cpp的编译将下载好的yaml-cpp-master.zip进行解压在源码目录下创建一个build文件夹并进入这个文件夹mkdir buildcd build使用cmake指令生成库文件cmake ..接着将会看到在build目录下有一个名为YAM_-CPP.sln的文件,用VS打开它对ALL_BUILD生成解决方案,成功生成后,会在buil

2021-07-05 09:06:21 1344

原创 VLC-Qt的编译与使用 windows10+VS2019+qt5.15

最近要在程序中实现一个能够播放本地视频的内嵌播放器,试过用ffmpeg、QtAV来实现,不是播放的速度有问题,就是在播放flv视频文件时无法调整进度,因此寄希望于vlc-qt。下面是我在windows10 VS2019环境下编译vlc-qt的详细步骤准备工作编译环境windows10 VS2019下载源码包我是用Git工具直接下载的,打开Git Bash,键入git clone git://github.com/vlc-qt/vlc-qt.git进行克隆,完成后源码默认被保存在C:\Users\x

2021-06-25 17:53:34 2652 11

原创 MediaInfo在VS2019下的编译和使用

准备工作下载源码 下载地址MediaInfo编译将下载好的压缩包进行解压,用VS打开MediaInfoLib.sln,生成解决方案(我选择的是Release版本,64位)

2021-06-24 10:30:23 481 1

原创 QtAV的编译、安装和使用

准备工作下载QtAV官方提供的编译好的依赖库 下载地址解压后得到下载QtAV-1.12.0源码 下载地址解压后得到QtAV编译

2021-06-15 13:56:06 2015 1

原创 Qt LINK : fatal error LNK1104: 无法打开文件“xxx.lib”

遇到这个问题实在太多次了,必须记录一下。。【问题现象】原来.pri文件中引入库文件的代码是这样的LIBS += -L$$PWD/$$strPath/$$strLib/ -lavcodec -lavfilter -lavformat -lswscale -lavutil -lswresample -lavdevice -llibrtmp报错信息如下但去掉 -llibrtmp 后重新构建就不会报错,说明问题出在引入librtmp上。【解决过程】试着将llibrtmp库引入语句单独写一行LI

2021-06-10 15:32:31 7652 2

原创 rtmpdump在VS2019下的编译和使用

近期工作业务需要实现接收rtmp流媒体并保存到本地的功能。要实现这个功能,就得用到librtmp这个库,综合了网上看到的好几种方法并进行实际操作,成功地对rtmpdump进行了编译和使用,由于参考的方法叙述会较为简略,因此在这里详细记录编译和使用的过程,也希望能给大家提供帮助。rtmpdump的编译1.下载librtmp的源代码,我下的是rtmpdump-2.3下载地址2.下载zlib的源代码,我下的是1.2.11下载地址3.打开vs2019,创建一个静态库工程,该工程默认保存在C:\Users

2021-06-10 14:16:48 614 1

原创 JavaScript 使用<input type=“file“>无法上传相同文件的坑

【问题现象】使用<input type = "file">标签上传文件时,若两次上传的是同一个文件,服务端接收不到上传文件的http请求。【排查过程】首先要明确问题出在服务端还是web客户端。用Fiddler软件监测,发现两次上传同一个文件,只截获到一个http请求。可以确定问题出在web客户端没有成功发送第二次上传文件的http请求。逐层检查相关函数,发现<input type="file">标签中onchange事件对应的函数没有被调用。【原因】两次上传同一个文件

2021-04-08 16:38:47 743 1

转载 Javascript读取本地文件

出于安全和隐私的原因,web 应用程序不能直接访问用户设备上的文件。如果需要读取一个或多个本地文件,可以通过使用 input file 和 FileReader 来实现。在这篇文章中,我们将通过一些例子来看看它是如何工作的。文件操作的流程①获取文件由于浏览器中的 JS 无法从用户的设备访问本地文件,我们需要为用户提供一种方法来选择一个或多个文件供我们使用。这可以通过文件选择器 <input type='file' /> 来完成。<input type="file">如果想

2021-03-23 10:49:14 10410

原创 Qt 递归与非递归遍历文件【深度遍历/广度遍历/迭代器】

在实现文件传输这一功能的过程中,经常需要遍历文件夹,下面对QT中文件夹的遍历方法做一个整理。文件夹遍历可以归纳为三个主要的步骤:①通过QDir访问目标文件夹②过滤所需的文件类型③获取过滤后的文件信息列表④遍历文件信息列表,取出文件路径并递归调用遍历函数。具体代码如下:实现方法一(递归,深度遍历,代码非常简洁)void CSystemManager::fileTraverse(QString path){ QDir dir(path); if(!dir.exists())

2021-01-05 09:53:48 1043

原创 QtCreator 构建套件时出现红色感叹号的解决方法

【问题现象】大意是64位的编译器无法为32位的Qt版本生成代码。P.S:原来选择的编译器是Microsoft Visual C++ Compiler 16.7.30330.147(amd64),对应的ABI是x86-windows-msvc2019-pe-32bit)【解决方法】对该套件重新进行配置,将64位的ABI改为32位。鼠标移入可以看到编译器对应的ABI的版本,找到版本为x86-windows-msvc2019-pe-32bit的编译器。回到“Kits”选项卡。在指示处找到刚才

2020-12-14 15:56:23 14949 6

原创 Qt 记一次文件传输引发的各种问题【readLine()的使用/缓冲区的flush()刷新机制】

今天在实现文件传输功能的时候,发现图片文件数据传到本地后没有按预期显示出来。核心代码如下:void CFileTransferThread::slotStartTransferFile(QString srcPath, QString extend, QString ip, quint16 port){ //进入这个函数,根据srcPath找到目标文件,以只读方式打开,注意文件不能一次性读取 QFile file(srcPath); file.open(QIODevice::R

2020-11-09 15:19:51 3915 2

原创 linux使用过程中的一些记录

最近的工作涉及到了交叉编译,于是开始和linux打交道。之前这方面的知识是一片空白,所以在这里也只简单记录一些常用的命令和遇到的一些问题的解决方法,之后也会慢慢补充。文件或文件夹被锁定遇到这个问题的背景是我将本地的某个文件夹共享到ubuntu操作系统中,但是某天发现这个文件夹的图标上多了一把小锁,无法进行写入操作。解决方法如下输入命令:sudo chown 用户名 文件夹sudo chown -R 用户名 文件夹e.g:sudo chown -R root /home/docu

2020-11-05 11:39:59 157 1

原创 Qt LNK2001:无法解析的外部符号 未找到文件moc_XXX.obj

由于在运行项目的过程中遇到这个bug实在太多次,特此记录一下,方便今后遇到同样的问题时能更快地解决。STEP1 检查代码第一步肯定要先检查我们的代码是否正确,主要要关注的地方有:① 头文件中,在类的定义里是否添加Q_OBJECT② 类的头文件和源文件是否有缺漏③ 在类的定义中声明的方法是否都有实现STEP2 执行qmake之前报这个错误的时候qmake是有效的,但这次失效了。STEP3 手动添加moc文件这个方法是我在网上看到的,系统提示缺少哪个类的moc文件,就在该.cpp文件中添加#

2020-09-16 20:29:03 5673 1

转载 C++中使用迭代器(iterator)删除元素的注意事项

C++中添加了各种各样的STL容器,不仅数量众多,而且功能强大,如果能够正常使用,可以使我们省去诸多时间。迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址,简单点就是每个“节点”对象的“指针”。但如果对迭代器在不同类型的容器中使用的方法不够熟悉,就可能出现一些问题,下面对迭代器在不同类型的容器中的用法进行总结。关联容器关联容器中的元素是按关键字来保存和访问的,支持高效的关键字查找和访问。关联容器类型如下:关联容器类型

2020-09-07 13:55:49 2517

原创 QtWebApp的使用【在Qt中搭建HTTP服务器】(三)

在前面的学习中,我们编写了几个控制器,这些控制器通过将散布在C ++源文件中的硬编码片段进行级联,来生成HTML文档。源代码看起来没有很好的组织结构,生成的HTML文档也很丑陋。如果要生成更复杂的网站,那现有的代码结构会使这个过程变得很痛苦。因此,整个世界的Web开发人员都在一些替代方案之间进行选择:反其道而行之,将程序代码插入HTML文档,例如JSP和PHP就选择了这种方法。在客户端使用Javascript(AJAX),将服务器提供的原始数据展示在屏幕上。将数据合并到准备好的HTML文件中,然后

2020-09-03 10:24:48 4802 7

原创 QtWebApp的使用【在Qt中搭建HTTP服务器】(二)

目录处理用户输入Session 会话什么是Session为什么要使用Session技术?cookieHTTP重定向国际化静态文件这篇博客介绍了QtWebApp中,form表单、session、cookie的使用。处理用户输入Web应用程序通常处理用户输入。我们将制作一个登录表单,以了解它的使用方法。创建一个新类 LoginController。同样,它源自HttpRequestHandler。//logincontroller.h:#ifndef LOGINCONTROLLER_H#defi

2020-09-01 17:29:10 4828 2

原创 QtWebApp的使用【在Qt中搭建HTTP服务器】(一)

用Qt和QtWebApp能够实现在C++中开发HTTP Web服务器应用程序。首先,需要先安装Qt的软件开发工具包。点此下载其次,下载最新的QtWebApp库。点此下载下载并解压缩QtWebApp ZIP文件。你将会看到:如何使用QtWebApp1)将QtWebApp.zip文件解压到文件夹中,并创建一个名为“ MyFirstWebApp”的新Qt控制台项目。然后,建立如下文件结构:2)将以下行添加到MyFirstWebApp项目的项目文件中:QT += networkinclude(

2020-09-01 09:14:35 21778 14

转载 Qt的main函数参数argc和argv学习总结

1、int main(int argc, char *argv[]):其中argv为指针的指针可以char **argv 或者 char *argv[] 或者 char argv[][]来表示,argc为整数2、具体用法看下面的例子(假设程序的名称为program ):(1)当执行程序时只输入./program,则由操作系统传来的参数为argc=1,表示只有程序名称,argv[0]指向输入的程序路径及名称。(2)当执行程序时输入./program -10,则由操作系统传来的参数为argc=2,表示除

2020-08-25 14:21:16 2842

转载 简说设计模式——观察者模式

什么是观察者模式观察者一般可以看做是第三者,比如在学校上自习的时候,大家肯定都有过交头接耳、各种玩耍的经历,这时总会有一个“放风”的小伙伴,当老师即将出现时及时“通知”大家老师来了。再比如,拍卖会的时候,大家相互叫价,拍卖师会观察最高标价,然后通知给其它竞价者竞价,这就是一个观察者模式。对于观察者模式而言,肯定有观察者和被观察者之分。比如在一个目录下建立一个文件,这时系统会通知目录管理器增加目录,并通知磁盘减少空间,在这里,文件就是观察者,目录管理器和磁盘就是被观察者。    观察者模式(Obser

2020-08-19 23:41:24 254

转载 C++ typedef详解

typedef的用途1)定义一种类型的别名注意typedef并不是简单的宏替换,如下例所示:int main(){ char *pa,pb;//声明了一个指向字符变量的指针pa,和一个字符变量pb pa = "hello"; pb = "hello";//报错,不能将const char*类型的值赋给char类型的实体 pb = 'h';//正常 return 0;}再看以下示例:int main(){ typedef char* PCHAR

2020-08-18 14:33:06 24143 5

原创 TCP的粘包、拆包问题及其解决方法

最近花了挺多时间跟TCP通信死磕,

2020-08-11 10:27:13 1180 3

原创 TCP的三次握手和四次挥手

三次握手(建立连接)在TCP中,客户端与服务端之所以能够建立可靠的连接,就是因为它们之间发生了三次握手。第一次握手 客户端→服务端一般情况下,一个连接往往都是由客户端主动发起,服务端则被动地等待。要建立一个连接,首先由客户端向服务端发送一个数据包,这个数据包包含了一些关键的信息:SYN=1 建立连接标志位seq=n 计算机随机生成的序号意思是:服务端,我(客户端)要和你建立连接(SYN=1)。第二次握手 服务端→客户端此时,服务端接收到这个数据包,也会发送一个数据包给客户端,作为回应

2020-08-08 22:53:45 198

原创 C++调用多态函数时的坑【隐式类型转换】

昨晚在写bug的过程中,发现了一个让人摸不着头脑的错误。先交代一下发生这个错误的背景:1)定义了一个名为TCP_MSG_HEAD的宏,值为0xBBAA55AA,作为目标TCP数据包的报文头,#define TCP_MSG_HEAD = 0XBBAA55AA;2)调用socket的readAll()方法,返回一个字节数组,也就是当前接收缓冲区里字节流的所有内容,并追加到内存缓冲区。QByteArray readArray=m_pServerTcpSocket->readAll();

2020-08-06 15:52:58 395

原创 Qt学习(十九)—— XML

XML文件和HTML文件一样,是有头有尾的——有开始标签就有对应的闭合标签。XML是用来存储数据的,HTML是用来显示数据的。所以XML标签灵活很多,不像HTML那样,表格就必须是<table>、一级标题就必须是<h1>,XML的标签可以由我们自己来定义,比如在xml中存储一些学生数据:<?xml version="1.0" encoding="UTF-8"?><info> <stu id="1"> <name>joey&l

2020-08-02 14:36:57 642

原创 Qt开发之通过配置.pro文件封装动态链接库(dll)

这两天在实现将类封装成动态链接库的过程中遇到了很多问题,在此记录一下如何利用.pro文件和.pri文件管理我们的项目,并实现、使用动态链接库(DLL)。这是项目的结构树:工程名为tableViewSocket,其中,项目的MVC放在tableView这个子工程中,TCP通讯功能放在Network中,Network被封装成动态链接库。以下是如何将这样一个结构的工程通过.pro和.pri构建出来的步骤。一、创建一个空的工程填好工程名和工程路径,Next到底。Qt在Test工程下自动生成了一个空的

2020-07-31 16:41:31 4402 3

原创 Qt学习(十八)—— 线程应用之画图

今天的目标是将之前学习的绘图和线程结合起来,来实现用线程绘图(……好绕)回顾一下创建一个子线程的流程:1)创建一个自定义线程类,并实现它的线程处理函数(本质是类的成员函数)。2)在主窗口类中创建一个自定义线程对象,再创建一个QThread子进程对象,然后用moveToThread()方法将自定义线程对象移动到子线程中。3)调用start()方法启动子线程。4)调用connect()方法,用户界面触发某些信号时,调用子线程中的槽函数。5)在子线程的槽函数中,也可以向主线程发送信号。6)调用con

2020-07-22 15:32:12 2550 2

原创 Qt学习(十七)—— 线程

为什么要学习线程假设一个单任务程序中有一段非常复杂的数据处理,需要占用很多内存,就很容易使程序发生卡顿、崩溃的现象。比如,在传输大型文件的过程中,发现进度条停滞了,这时候如果我们不耐烦地多点了几下窗口,就很可能会导致窗口无响应。所以,像这种复杂的数据处理不应该放在界面上,而应该把它放到线程中。...

2020-07-21 22:46:45 891

原创 Qt学习(十六)—— TCP文件传输

今天学习TCP文件传输。下面是服务端向客户端发送文件的流程:服务器向客户端发送文件,需要先选择一个文件,然后获取文件的文件名和大小。在文件传输的过程中,往往都要有一个进度条指示当前文件传输的进度,这个进度是由服务器端提供的,那客户端要如何得知文件传输的进度?这就需要服务端在往客户端发送数据之前,先发送一个携带上文件信息的数据过去。客户端从服务端接收到携带文件信息的数据后,要按照一定的协议对字符串进行解析,获取文件的大小、文件名等信息。有了文件名,客户端就可以在本地创建一个同名的文件。接着,服务端开始读

2020-07-20 23:07:07 755

原创 Qt学习(十五)—— 网络通信之UDP

UDP就像写信,写明地址也不能确保对方能收到,TCP就像打电话,只有确定对方是我们要找的人才能进行通话。在Qt的UDP通信中,不区分客户端和服务端,只区分发送端和接收端。无论是发送端还是接收端,都只有一个套接字,也就是QUdpSocket。此外,UDP通信中没有监听listen(),只有绑定bind(),往套接字中读写数据用的是readDataGram()和writeDataGram()。P.S:datagram是数据报 / 数据包 / 数据报文的意思和TCP相同的地方是,发送端向接收端发送数据时,会

2020-07-19 20:47:29 1714 1

原创 Qt学习(十四)—— 网络通信之TCP

TCP有两个套接字,一个是socket,监听套接字,负责监听,一个是accept,通信套接字,负责建立连接(链接)?bind 绑定 比如打电话需要知道电话号码 绑定的作用可以简单认为是固定一个端口,如果不固定,那么这个端口是随机的。listen是服务端用来监听的。总之服务端要完成的就是:socket、bind、listen。客户端也有socket套接字它需要主动链接,所以还有一个connect客户端主动向服务端发起connect链接。服务端有accept确定建立好了链接,没有建立链接的时候它是

2020-07-17 15:32:57 2675 2

vlc-qt-1.2.0库【VS2019+Qt 5.15】

这是一个编译好的 vlc-qt 1.2.0 版本资源文件,内含所需的lib文件、dll文件以及头文件,编译环境为VS2019+Qt 5.15

2021-09-06

在Qt中使用yaml-cpp库对yml文件进行读写

这是一个用Qt实现的利用yaml-cpp库对yml文件进行读写的小demo,内含所需要的库文件和头文件以及测试文件

2021-07-08

yaml-resource.zip

本压缩包包含windows10 vs2019下编译的64位debug版本的yaml-cppd.lib库文件以及所需的头文件

2021-07-08

c++ yaml库文件【lib】

windows10 vs2019下编译的64位debug版本的 yaml.lib库文件

2021-07-08

MediaInfo_VS2019_x64_Release.zip

本资源包含了使用第三方库MediaInfo时必需的MediaInfo.dll、MediaInfo.lib、MediaInfoDLL.h文件,编译环境为windows10 VS2019,版本为64位Release

2021-06-24

testlibrtmp.zip

这是一个用于测试接收rtmp并保存为本地flv文件的vs控制台工程,内含编译好的librtmp.lib静态库,以及编译librtmp.lib所需的头文件和源文件。

2021-06-10

librtmp.zip

这是一个在vs2019成功编译的静态库,里面包含编译所需的头文件和源文件,以及编译成功的librtmp.lib文件,对于头文件和源文件中会导致编译出错的地方已经进行修改。

2021-06-10

rtmpdump.zip

本文件包含在vs中编译rtmpdump所需的头文件和源文件

2021-06-10

avcodec-58.zip

解压后得到avcodec-58.dll,不需要积分

2021-06-10

【QT】自定义协议解决TCP粘包和拆包问题

本demo模拟了TCP通信中发送端和接收端的行为,并利用序列化和反序列化的思想,自定义协议来解决TCP的粘包和拆包问题。

2020-08-11

【QT】通过配置.pro封装动态链接库(dll)的简单实现

在这个DEMO中,我用手写.pro和.pri的方式来组织项目的结构,并通过配置.pro文件封装了一个动态链接库MyLib,在此分享给大家,一起学习~

2020-07-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除