Fu_Lin_
为人朴实正直,有积极进取的心态,努力拼搏。性格沉稳内敛,做事细心踏实,个性坚韧,能吃苦耐劳,对工作有很强的责任感!有很强进取心和团队协作精神,学习能力、适应能力、承受压力能力较强,善于挑战自我。
展开
-
Qt MSVC编译器中文字符串编译报错及乱码问题
首先明白为什么会报错:Qt Creator IDE生成的源代码文件默认采用的编码是UTF-8(可以使用类似Notepad++这种编辑器打开查看文件编码),但是MSVC编译器可以支持源代码文件的编码为UTF-8-BOM(即带BOM格式的),即默认不支持UTF-8。上面的解决中文字符串编译报错方案2虽然解决了编译问题,但是最后还是发现又问题,即中文显示乱码。其本质原因还是因为方案2并没有真正让msvc编译器使用UTF-8编码导致。即最开始的方案1,在.pro文件加入设置,qmake后重新编译执行。原创 2024-04-19 17:53:14 · 462 阅读 · 0 评论 -
QWidget 实现九宫格图案解锁
最近需要实现一个九宫格图案解锁功能,查看网上的方案,基于QWidget的方案全网搜来搜去就一篇Qt编写自定义控件:图案密码锁。原创 2023-11-10 18:15:24 · 302 阅读 · 2 评论 -
Qt基于QuaZIP实现文件压缩/解压实时进度显示
Qt基于QuaZIP实现文件压缩/解压 (Windows系统)Qt基于QuaZIP实现文件压缩/解压 (Linux系统)原创 2023-09-04 14:27:44 · 607 阅读 · 0 评论 -
Qt基于QuaZIP实现文件压缩/解压 (Linux系统)
上文写了Qt基于QuaZIP实现文件压缩/解压 (Windows系统)的Quazip编译和使用,本文将继续介绍Linux下的编译和使用,相比Win系统会更简单,编译更快!关注微信号回复Quazip看全版本系列QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库。适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的zip文件可以通过其它工具打开。Qt中提供了无法很好地压缩/解压缩文件夹。7zip,或WinRAR),只能通过解压读取,也就是说。原创 2023-09-01 11:49:43 · 490 阅读 · 0 评论 -
Qt基于QuaZIP实现文件压缩/解压 (Windows系统)
最近涉及到压缩功能,想着程序自带解压缩会好一点,其他的可以使用备用命令来,例如7Z,tar.gz等可以使用命令,而自带的采用ZIP压缩,搜索了下发现适合Qt只有QuaZIP开源库,此库有一个缺陷就是解/压缩没有进度提示,后续我会专门写一篇基于修改源码后带有进度条功能的QuaZIP解压缩,下面看具体的用法。关注微信号回复Quazip看全版本系列QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库。原创 2023-09-01 11:25:09 · 589 阅读 · 0 评论 -
QML 中使用 QAbstractListModel 作为 ListView 的 model 实例 1
我们需要注意的是我们在使用 QAbstractListModel 时至少要实现的方法:int rowCount(const QModelIndex &parent) const;QVariant data(const QModelIndex &index, int role) const;virtual QHash<int, QByteArray> roleNam...原创 2019-09-09 14:53:38 · 3169 阅读 · 1 评论 -
QML 中使用 QAbstractListModel 作为 ListView 的 model 实例 2
这篇比 上篇 的要好理解很多,接地气一点主要是几个虚函数的实现,可查看QAbstractListModel的父类主要是对内部维护的动态数组进行操作具体实现:#ifndef MYMODEL_H#define MYMODEL_H#include <QAbstractListModel>#include <QHash>#include <QList>...原创 2019-09-09 15:00:05 · 2760 阅读 · 10 评论 -
linux ubuntu 安装5.15启动QtCreator报错
如下图:报错信息如下:qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.Available plat原创 2021-01-07 09:07:25 · 3531 阅读 · 3 评论 -
QT实现后台服务,linux下使用systemd管理QT后台服务
此部分中使用的参数不仅限于service类型的unit,对其它类型的 unit也是通用的,有关这些参数及其说明的完整列表,可运行命令 man systemd.unit 或访问 systemd.unit 中文手册。软件,是一种系统守护进程,其提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果。通常,后台服务程序都是由一个主程序去调用启动,如果是在Qt主程序中调用,可以使用QProcess完成,也是要添加启动参数才行。转载 2023-03-29 14:20:41 · 1420 阅读 · 0 评论 -
关于Qt在线安装报错下载“http://mirrors.aliyun.com...“时出现网络错误无法在线安装Qt 的解决方法
来替换代理,然后就可以继续运行了,我试了下,确实可以继续运行,但是很多组件都会变成不可选择了,也就是只能安装一部分组件,什么QtCreator都无法选取安装,所以这种做法我就放弃了,可能是我哪里没有设置全的原因吧!这样就能运行起来在线安装Qt了,速度也是相当快~原创 2023-03-22 14:19:21 · 873 阅读 · 0 评论 -
qss样式表之QPushButton, 下拉菜单设置等等
文章目录先来个示例字体样式文字位置边框样式背景样式下面是一个综合示例下拉菜单当然下拉菜单指示器图标也有动态样式先来个示例QPushButton { font-family: "Microsoft YaHei"; font-size: 16px; color: #BDC8E2; background-color: #2E3648;}效果图如下:上面的例子是基本的样式设置,下面我们将探讨 QPushButton 各种样式设置:字体样式font-family: "转载 2022-05-30 11:57:53 · 1824 阅读 · 2 评论 -
使用 QTcpServer设置多线程客户端,解决大数据解析方案
文章目录前言两种多线程服务端工作方式第一种第二种服务端类实现客户端多线程类实现关于解析前言最近有个问题,自己需要建立TCP服务端,等待客户端来连接,然后客户端会狂轰乱炸发送数据,大概是10毫秒50多组数据,这50多组数据需要画成曲线图展示出来,而每次过来都是3组,所以换言之也就是10毫秒150多个点数据,而这些点数据又是十六进制报文方式,有包头,包尾,校验码等等…所以解析就得花费一定时间,如果不放在线程中处理,就信号槽这个关联的频繁调用就会卡崩主线程UI。两种多线程服务端工作方式第一种第一种是最方原创 2022-05-11 14:58:57 · 1091 阅读 · 0 评论 -
QTableWidget单元格自动分行显示
前言最近使用QTableWidget, 使用浑身解数就是不自动换行,像网上说的在设置完数据后调用 resizeRowsToContents(); 就会自动换行,对我而言,没有任何作用,后面发现采用item代理就可以实现换行了,然后后面又发现不采用Item代理,只需要加一句话,也能实现换行,尼玛~~~~,原来官方已经实现了,不过还好我也实践出来了,这行代码网上没有一个人说过,我也是看文档,研究了才实践是可以的,下面我会贴出两种方式,供大家选择使用,想偷懒的直接使用我说的执行设置mode这行代码就ok了,想要原创 2022-04-27 09:13:59 · 3005 阅读 · 2 评论 -
关于大小端转换整理总结(包含原始方式、Qt方式)
文章目录一、什么是大小端二、哪些平台是大端、哪些平台是小端、为什么有大小端之分常见的CPU架构的大小端举例(有待验证)为什么有大小端之分三、什么时候需要大小端转换、哪些数据需要判断大小端、如何判断大小端什么时候需要大小端转换哪些数据需要判断大小端如何进行大小端判断四、大小端如何转换,常用方法是什么五、Qt中大端小端的转换一、什么是大小端内存地址小端模式存放内容大端模式存放内容0x00000x780x120x00010x560x340x00020x340x56原创 2022-04-12 15:42:00 · 1178 阅读 · 0 评论 -
Qt使用QProcess进程间双向通信(linux和win系统)
前言最近需要使用一个主进程A,来调用子进程显示,子进程只是单纯的显示一个webview页面,为什么不直接在主进程显示呢?因为我发现在主进程调用webview后,加载页面通信后,无论怎样动态构建析构删除Webview或者WebEngineView,重置url,都无法让浏览器真正的关闭页面,导致虽然webview析构删除了,但是加载的页面还在通信,这就很奇葩了,只有真正将我的主程序给关闭掉,才能真正关闭加载出来的webview页面,所以不得不构建一个子进程,通过主进程来控制子进程的大小,显示位置,显示url,原创 2022-03-13 11:07:04 · 845 阅读 · 0 评论 -
QDataStream实现自定义对象序列化(结构体读写操作)
前言最近我想将结构体数据一股脑塞进QDataStram, 然后一股脑读取,代码示例:结构体 A;QDataStram b;//读取b>>A;//写入b<<A;就是这样直接方便,可惜不行,看官方文档只能一个一个变量写入进去,如下:官方代码写入:QFile file("file.dat");file.open(QIODevice::WriteOnly);QDataStream out(&file); // we will serialize the原创 2022-03-01 09:10:58 · 1400 阅读 · 0 评论 -
QByteArray 相关操作
比如,我有一个大端数据是这样的QByteArray value;value.append(0x01);value.append(0x02);value.append(0x03);qDebug() <<"Original value is:" << value.toHex(); //"010203" like expected我需要的是little endian,这意味着输出应为" 030201"。 到目前为止,Qt 没有任何内置的方法可以转换,所以为了不手动写方法造轮子原创 2021-12-23 10:02:09 · 1703 阅读 · 6 评论 -
QFtp或QNetworkaccessmanager因系统代理请求报错解决方案
文章目录前言解决方案前言最近 在搞 QFtp 因为系统有代理,老是卡在connectToHost 方法上,而QFtp也不没有error信号发出,只有一个commandFinished 信号, 这个信号连接也不触发,所以又改用了 QNetworkaccessmanager 来实现相应的FTP下载功能,发现调用get后也是一样,会卡很久,不过会触发error 信号报错如下:下载xxxxxx 时错误:Downloading file failed:\nThe network connection was原创 2021-12-16 17:13:18 · 1596 阅读 · 1 评论 -
QT实现 字符串 数学公式运算
看下效果图文章目录前言方法说明效果图前言今天看到有一些特殊需求,比如 ** “1+2*(4+6)|7” ** 这种字符串形式的公式,看清楚了,不是整形的,如果是整形的就没必要写这篇文章了,前面两个引号,是字符串的形式表达式,因为是字符串,所以从正常角度来说,是无法解析的,因为你不知道里面具体是什么运算符,就算你知道,你也不知道运算法在哪个位置,比如第二个是加法运算法,因为我们是看的到的,所以知道在这个位置,但是计算机是死的,你给它字符串,它也只能默默打印出来,而不是给你计算出来,所以具体计算还得自原创 2021-11-05 09:28:36 · 2405 阅读 · 0 评论 -
QScrollArea qss样式表,美化滚动条
文章目录效果图如下:前言QSS样式表代码效果图如下:前言在网上翻遍如何优化QScrollArea 样式表,发现没有,一顿气啊,这白嫖越来越难了,只能自己去写了,下面我给出具体的样式表,直接粘贴即可使用,参考上面的效果图展示QSS样式表代码如果要禁用水平滑动条请写如下代码:ui->scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);下面是我的QSS美化样式,我只做了垂直滑动条的美化,水平的目前没有美化,原创 2021-10-25 15:27:59 · 2791 阅读 · 0 评论 -
QSettings操作配置文件
用Qt写界面时,难免会进行本地信息的保存,可以使用轻量级数据库sqlite,也可以使用QSettings读写配置文件。如何来进行读写呢?如下,使用QSettings写一个通用的读写方法:bool Util::writeInit(QString path, QString user_key, QString user_value){if(path.isEmpty() || user_...原创 2018-04-25 15:51:47 · 808 阅读 · 2 评论 -
Qt生成随机数 qrand 及 QRandomGenerator
最近采用Qt使用随机数,发现了新的使用方法,更简便,现记录如下:老方法 qsrand利用qrand和qsrand生成随机数位于QtGlobal中例,生成一个0和10之间的随机数//设置种子,该种子作为qrand生成随机数的起始值,RAND_MAX为32767,即随机数在种子值到32767之间qsrand(QTime::currentTime().msec()); qrand()%10;新方法 QRandomGenerator利用QRandomGenerator类Qt5.10之后新增该类原创 2021-08-20 15:41:27 · 2723 阅读 · 0 评论 -
QML如何制作插件
前言之前有写过如何基于QWidget制作动态库QT跨目录编译及多工程集成(动态库的创建、引用及工程间相互依赖关系的pro文件编写方法), 但是现在主流已经是Qml了,所以qml的插件制作也是必不可少的,很多程序都是需要组件插件化来开发!当然网上也有很多相关的知识点,这里也是借鉴了大多数的网上知识理论,自己也是亲测验证使用到项目了,效果不错,下面看我如何一步一步生成QML插件化的制作步骤!力求简单!高效!https://www.jianshu.com/p/625057deaeachttps://blog原创 2021-07-10 20:06:57 · 526 阅读 · 0 评论 -
QT模拟win系统键盘输出,模拟组合快捷键输出(仅限windows系统)
文章目录前言模拟键盘输入关于UI界面使用keybd_event函数效果图最重要的提示前言今天想使用Qt来实现对Win系统的键盘模拟按下,就是程序代码设置按下某个键盘的按键,达到和真人按下键盘的效果一样!模拟键盘输入在网上看了很多文章,都是用Qt使用下面这个方法:使用tab键 QKeyEvent tabKey(QEvent::KeyPress, Qt::Key_Tab, Qt::NoModifier); QCoreApplication::sendEvent(this, &tabKey)原创 2021-06-23 16:36:14 · 736 阅读 · 2 评论 -
Qt编译QuaZip的过程和使用踩坑--Win平台和Android平台编译
文章目录前言下载QuaZip源码(包含0.7.3和最新1.1版本)编译QuaZip源码1、配置zlib2、构建(重点操作顺序)构建报错 (error LNK2019: 无法解析的外部符号 "public: virtual __thiscall uaChecksum32::~QuaChecksum32(void))分析原因解决方案3、查看测试QuaZip测试代码运行报错 (error C2491: “QuaZipFile::staticMetaObject”: 不允许 dllimport 静态数据成员 的定义原创 2021-06-22 18:00:44 · 569 阅读 · 0 评论 -
Qt5.12.x 导入CMakeLists.txt 工程 提示 No suitable kits found.
前言今天导入Quazip工程,现在最新的都是使用CMakeLists.txt 工程文件,导入时就出现了下面提示。问题No suitable kits found.Add a kit in the options or via the maintenance tool of the SDK.如下图:提示kits没有发现,其实是可以的,我打开options 选项,kits是完好无损的可以看到没有任何问题,这个时候,我点击CMake,发现是空的解决问题所有就断定是cmake编译器没有安原创 2021-06-18 15:52:13 · 4062 阅读 · 0 评论 -
Qt 系列文章之Qt5.12.x 编译QFtp项目
文章目录前言克隆QFtp源码编译源码编译错误缺少perl解决部署编译好的库使用编译好的库前言最近遇到几个Ftp需求,想使用Qt官方的Ftp试试,就打算自己编译QFtp,开始以为很复杂,其实没啥难度!三两下就搞定了!下面看具体步骤克隆QFtp源码从 GitHub 下载 QFtp:qtftp源码或者使用命令下载 :git clone https://github.com/qtproject/qtftp编译源码首先由qtcreate打开根目录下的pro,项目里面有三个可以直接看到的项目如原创 2021-05-17 18:04:26 · 653 阅读 · 1 评论 -
QT跨目录编译及多工程集成(动态库的创建、引用及工程间相互依赖关系的pro文件编写方法)
采用一个非常简单的Qt程序作为例子,通过pro文件的合理编写,使得我们的程序在使用动态库的时候,几乎可以忽略掉动态库的存在。它包括3部分:生成动态库使用动态库生成与使用的自动化测试环境:ubuntu 12.04 + Qt 5.9.4windows vista + Qt 5.9.4(MinGW)引子一个非常非常简单的Qt的小程序,是吧?widget.h#ifndef WIDGET_H#define...原创 2018-05-10 16:53:41 · 2282 阅读 · 1 评论 -
下载测试视频网站分享
有时候写程序需要测试视频下载可以通过下面的地址下载各种格式,MP4, flv, mkv, 3gp 格式下载Download Sample Videos原创 2021-05-13 14:14:24 · 1918 阅读 · 0 评论 -
Qt程序关于路径、用户目录路径、临时文件夹位置获取方法
比如我们有一个程序在:C:/Qt/examples/tools/regexp/regexp.exe1. 程序所在目录QStringQCoreApplication::applicationDirPath()那么 qApp->applicationDirPath() 的结果是:输出:C:/Qt/examples/tools/regexp 2.程序的完整名称。那...原创 2018-04-25 15:38:19 · 1088 阅读 · 0 评论 -
Qt Creator编译时报错 fatal error C1020: 意外的 #endif
前言今天编译Qt是,本来好好的,也不知道突然为啥会报这个错误 fatal error C1020: 意外的 #endif,一阵头大啊,各种百度,无果,都是加什么 #include ”stdafx.h" 头文件,这玩意和我压根没任何鸡毛关系,果断放弃这个方案。心累,后面各种折腾算是无意中找到原因了!问题解决是怎么导致了,我怀疑是我敲快键盘,按到快捷键了,因为我切换了一个东东,这里说不明白,看下图就是这个玩意,QtCreator工具栏上面的,各种转码文件都没用,后面发现这个变成了Unix(LF),然后原创 2021-04-26 15:12:43 · 1105 阅读 · 1 评论 -
Qt Http请求报错,服务端报错Tornado Invalid x-www-form-urlencoded body: ‘latin-1‘ codec can‘t encode characters
文章目录解决过程解决方式解决过程今天使用Qt进行Http请求post接口,服务端那边直接报错:Tornado Invalid x-www-form-urlencoded body: ‘latin-1’ codec can’t encode characters in position 0-1: ordinal not in range(256) 报错后肯定是拿不到数据,所以服务端这边只能返回请求参数错误,说明一下,服务端也是我这边自己实现的,所以我以为是我写的方式有问题,后面通过postman等专业原创 2021-03-31 14:44:24 · 637 阅读 · 0 评论 -
Qt 在线源码web版地址code.woboq.org/qt5/
Qt源码WEB版传送门原创 2021-01-07 11:27:38 · 1749 阅读 · 0 评论 -
Qt 判断文件或文件夹是否存在及创建文件夹
1. 判断文件夹是不是存在参数说明:QString fullPath;//文件夹全路径/*方法1*/bool isDirExist(QString fullPath){ QDir dir(fullPath); if(dir.exists()) { return true; } return false;}/*方法2*/bool isDirExist(QStr...原创 2018-04-10 13:46:54 · 1930 阅读 · 0 评论 -
Qt 客户端 接入 paypal支付接口开发(python 接口)
前言 最近要接入国外支付,PC端和移动端都要使用,微信,支付宝这些国内还可以,在国外就用不上了,所以只能另谋出路,于是采用了Paypal支付,国际移动支付,和微信,支付宝类似吧。 说一下环境吧,我使用的是 Qt5.12 系列开发客户端,开始我以为接入paypal客户端也要写代码的,因为之 前接入过微信,支付宝,写android都是要客户端写代码,然后服务端回调之类的,发现PayPal API是基于HTTP的restful API,使用OAuth 2.0进行授权。API请求和响应主体采用json原创 2020-08-08 09:21:54 · 1019 阅读 · 0 评论 -
Qt 运行提示Failed to create OpenGL context for format QSurfaceFormat(version 2.0, options QFlags()解决方案
今天在别的电脑上面运行我写好的Qt程序报错如下:大概提示试试这样Failed to create OpenGL context for format QSurfaceFormat(version 2.0, options QFlags(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize 8, stencilBufferSize 8, samples -1, swa原创 2020-07-20 15:00:21 · 17631 阅读 · 18 评论 -
Qt 拖拽文件的实现(桌面到应用程序,应用程序到桌面均可以)
前言今天尝试了下Qt的文件拖拽,从桌面或系统其它位置拖拽文件到Qt的控件中,我发现,很简单,但是逆序过去,从程序将文件拖拽到桌面或系统任意位置,废了我不少时间,尤其是我要吐槽的一篇文章Qt中从应用程序拖出文件或图片到桌面,一顿瞎写,标题和内容完全不符合,让我一顿陷入了拖拽的误区,查阅各种资料和百度才搞定从应用程序拖拽文件到桌面的逆袭,不容易啊,我会记录两个版本,一个是QWidget,一个是Qml,我自身是开发于Qml的,不过两种都实现过了,所以现记录如下。正文一、QWidget版本1.1 从桌面原创 2020-07-16 11:23:55 · 2963 阅读 · 15 评论 -
QTabWidget自定义qss样式订制
文章目录前言定制样式一:定制样式二:前言想起之前很久做过一个客户端,页面效果类似于网页效果,最近抽空整理了下QTabWidget的网页效果qss样式, 就是做个记录,有看的上的可以直接拿去使用废话不多说啊,先看下面的效果图,再看实现qss代码总共实现了两个定制样式,还有更好看的样式的希望能评论留言!!!定制样式一:废话不多说啊,订制的qss如下:QTabWidget::pane { /* The tab widget frame */ background:#FAFAFA;原创 2020-05-11 08:50:47 · 2669 阅读 · 0 评论 -
C++11 中的std::function和std::bind
1. 可调用对象可调用对象有一下几种定义:是一个函数指针,参考 C++ 函数指针和函数类型;是一个具有operator()成员函数的类的对象;可被转换成函数指针的类对象;一个类成员函数指针;C++中可调用对象的虽然都有一个比较统一的操作形式,但是定义方法五花八门,这样就导致使用统一的方式保存可调用对象或者传递可调用对象时,会十分繁琐。C++11中提供了std::function和st...原创 2019-11-14 17:46:43 · 484 阅读 · 0 评论 -
在Windows 下的 Qt 应用程序获得 Administrator 权限
目录前言方法一方法二结论前言今天用到写注册表,之前都写成功了,后面重新打开怎么都写不成功,肯定不是代表问题,后面想了下,之前是使用的管理员权限打开的IDE,还是VSIDE, 今天是使用QtCreator普通打开的,所以执行了代码,但是却注册表更改却没有生效 !于是想到估计程序启动必须要用管理员权限,发布的时候不可能用户自己每次右键管理员启动,那样太麻烦了,肯定是用户双击运行exe程序,自动默认...原创 2020-04-25 10:56:45 · 1194 阅读 · 0 评论