- 博客(145)
- 资源 (10)
- 收藏
- 关注

原创 Qt - 一文理解信号槽机制(万字剖析整理)
本文关键字:信号槽,使用方法,connect多种写法,元方法式,函数指针式,functor式,连接类型,元对象编辑器moc,Q_OBJECT宏,对象间通讯机制,源码分析,原理讲解...本文主要介绍了Qt的信号槽机制,该机制为Qt核心之一,使用很简单,但弄懂背后的原理还是耗时不少。特别感谢参考文章的博主,站在你们的肩膀上真的获益良多。
2020-10-28 21:16:44
3787
2

原创 Qt - 一文理解QThread多线程(万字剖析整理)
本文关键字:QThread,多线程,正确使用方法,EvenLoop,源码分析,moveToThread,connect,正确退出线程,线程间通讯,线程同步,锁,可重入,线程安全...本文主要介绍了QThread的一些机制及非常多注意点,基本涵盖了线程使用的大部分场景,万字长文,耗时不少。特别感谢参考文章的博主,在学习的工程中它们的文章让我少走了很多弯路。代码是手撸的,可能存在错误,若发现还望留言指出。
2020-10-26 22:07:22
20522
11
原创 Qt - Lambda表达式
文章目录Lambda 表达式语法格式[capture]捕获表达式变量捕获作用域变量(params)mutableconstexprnoexcept->return type{}Qt connect参考鸣谢Lambda 表达式Lambda表达式是一个匿名函数。这里从使用 std::sort 的写法看C++标准的发展:ISO C++ 98 标准下,需要这样写:bool compare(int& a,int& b){ return a>b;}sort(a, a
2021-10-12 20:26:27
1037
原创 Git - 日常使用小结
文章目录前言本地配置Git基础概念基本操作仓库获取拉取提交分支管理更新子模块查看修改提交了错误的commit多人协同开发常见问题在线学习网站参考鸣谢深入讲解前言说来惭愧,关于版本控制工具,此前虽然用过SVN和Git,但都是局限于本地管理,所以并没有远程仓的概念…远程环境这里使用 GayHub,其他提供远程Git存储库的服务平台其实也大同小异。本地配置Git 安装配置个人信息# <xxx> : 表示需要替换的内容git config --global user.name <n
2021-10-10 16:34:43
588
原创 Quick - Hello World
文章目录背景谈一谈为我什么学QtQuick环境搭建Qt 安装VS2019 安装Qt Visual Studio ToolsHello World.promain.cppmain.qml运行效果参考鸣谢背景Qt4自2005年发布已为成千上万的应用程序甚至桌面操作系统、移动操作系统提供了稳定、可靠的开发框架。计算机用户的使用模式近年发生了变化,用户正在从传统PC转向笔记本电脑或智能手机。传统PC被越来越多的触摸屏设备取代,计算机的用户体验模型也在跟随改变。在这之前Windows UI占据了我们的世界,但现
2021-04-18 20:09:08
764
原创 Qt - 序列化之YAML(yaml-cpp)
文章目录Yaml 语法Yaml 库编译使用写文件解析文件Yaml 语法见 Linux - Ubuntu 18.04 网络配置(YAML)- YAMLYaml 库很遗憾的是 Qt 中并没有 yaml 的库,所以我们得找一些三方库。庆幸的是 YAML官网 已经给我们整理好了。本文介绍的是 yaml-cpp,该库目前以 YAML 1.2 规范为准。编译Github - README 非常详细:这里简单说一下(linux - 交叉编译为例):根据文档,UNIX 下编译无需使用 [-G gen
2021-04-07 21:42:02
4912
1
原创 Qt - 序列化之JSON
文章目录Qt-Json相关类QJsonDocumentQJsonObjectQJsonArrayQJsonValueQJsonParseError构建json对象生成js文档json 解析Qt-Json相关类QJsonDocumentQJsonDocument 类常用于读和写 JSON文档,这里的JSON文档可以是 二进制文档也可以是 UTF-8文档。QJsonObjectQJsonObject 类封装了一个JSON对象。JSON 对象是一个键值对 <key/value>,key 是独
2021-04-06 21:26:49
3252
原创 Qt - QCustomPlot折线图
简介QCustomPlot 是一个Qt三方图表库,在QChart还未免费开放时,应该是一个很受欢迎的三方库。即使现在QChart已经可以免费使用了,有些功能使用QCustomPlot实现,体验也非常棒!下图为QCustomPlot官网的一些示例,非常丰富。下载QCustomPlot官网这里我下载的是最新的版本 QCustomPlot 2.0.1下载的文件包括:非常详细的说明文档官方实例源码及一份GPL声明基本概念QCustomPlot 图表类:用于图表的显示和交互QCPLaye
2021-04-05 21:56:51
4184
1
原创 Qt - UI数据双向绑定简易实现
文章目录前言原理Qt 实现思路源码效果一些想法参考鸣谢乍暖还寒时候,与上班提醒互道早安。前言自从前端大火了以后,UI数据双向绑定的ui框架愈发流行。作为前菜鸡安卓开发,我也是最近才知道谷歌还有推 Jetpack Compose 作为UI框架;其最大的亮点就是 数据双向绑定 和 声明式UI。而作为现Qt开发,看到声明式UI的使用表示简直不要太爽啊!实现声明式UI ≈ 实现一个 编译器,非我等俗人可简单实现。那就退而求其次,先用Qt实现 UI与·数据双向绑定。原理查找了一下,实现数据绑定的做法有
2021-03-24 08:12:44
4912
1
原创 【3】Halcon - 常用系统接口
* 关闭窗口dev_close_window ()* 清空窗口dev_clear_window ()* 新建窗口dev_open_window (0, 0, 512, 512, 'black', WindowHandle)* 显示对象dev_display (ObjectSelected)* 显示文字dev_disp_text ('hello', 'window', RowEdgeFirst, ColumnEdgeFirst, 'black', [], [])* 设置颜色de
2021-03-22 22:06:22
517
原创 Linux - Ubuntu 18.04 网络配置(YAML)
文章目录背景YAML注意事项数据类型对象数组纯量复合结构严格类型引用静态IP动态IP配置生效查看ip参考鸣谢背景Ubuntu 18.04 不再使用 ifupdown 配置网络,而改用 netplan。在 /etc/network/interfaces 配置固定IP是无效的,重启网络的命令 services network restrart或 /etc/init.d/networking restart 也是无效的。netplan 的配置文件采用的是 yaml 文件。YAML注意事项大小写敏
2021-03-19 20:53:37
4010
1
原创 Linux - udev 规则及常见应用
文章目录前言端口固定自动获取权限udev 规则用户组管理参考鸣谢前言在 arm-linux 上进程上位机开发时,若你也使用到串口,想必你也遇到过设备端口号不固定,由于未修改权限打开串口失败的问题。其实上述问题均可以通过修改 udev 完美解决。所谓udev 是通用内核设备管理器,以守护进程(用户态)的方式运行于 Linux 系统,并监听在新设备初始化或设备从系统中移除时,内核(通过netlink socket)所发出的 uevent 。系统提供了一套规则用于匹配可发现的设备事件和属性的导出值。匹配
2021-03-19 19:30:22
613
原创 C/C++ 内存泄漏检测工具汇总
文章目录前言crtdbg使用原理例子Visual Leak Detector(VLD)Checkpoint/DumpStatisticsWindbg腾讯WeTest - TMMIBM purifyVVMapApplication VerifierCppcheck前言本文主要记录 Windows 下内存泄漏检测工具;Linux 下首选必须是 Valgrind 啊。目前待检测的程序采用的是 Qt,由于Qt本身的半自动内存管理机制,因此好用的检测工具真的不容易找…详细可看该篇 Qt浅谈之一:内存泄露(总结)
2021-03-04 20:23:34
11863
3
原创 C++ 动态数组
起因前不久遇到以一个问题,使用 MinGW 编译没有问题:const int bufferSize = 3;char buffer[bufferSize];但是到了 MSVC 中就报错了:expected constant expressioncannot allocate an array of constant size 0原因:该错误与编译工具有关,有的编译工具允许定义数组时使用变量,有的则不行。MSVC 编译时,bufferSize 是个变量,一直要到运行期才被分配内存,才会有值
2021-03-02 21:50:58
410
原创 Qt - 标准对话框翻译
前言Qt 将我们常用的窗口封装成了标准对话框,常见的有 QFontDialog ,QColorDialog,QFileDialog,用起来非常方便…直到需要翻译。由于标准对话框并非我们自己实现,所以翻译所需要的ts该如何生成呢?对于一般的标准对话框,只需要找到其对于的ts,并将其对应的部分复制到我们的ts中就可以了。那么去哪里找呢?查找路径为安装路径(安装时记得安装源码)例如:QFontDialog 位于 D:\QT\QT5.9.3\5.9.3\Src\qttranslations\trans
2021-03-02 20:48:28
998
原创 【2】Halcon - ROI
文章目录基本概念ROI的实现鼠标绘制ROI基本概念ROI (Region of Interest),感兴趣区域。顾名思义,就是你主要想处理的区域。Halcon中处理的对象分为三类,分别是图像(image),区域(region),XLD(extended line description)(主要用在亚像素边缘的提取)。ROI的作用:加快程序处理速度,原因在于,是程序处理只需处理ROI,其他区域直接跳过。在图像匹配中,可以定义模板。ROI的实现利用 ROI 分为两个简单的部分:创建区
2021-01-18 21:13:58
795
原创 【1】Halcon - 图像读取
文章目录相机采集本地文件读取读取单张图片循环读取图片Halcon的图像来源有两种,一种是通过相机采集,一种是读取图片。Halcon不仅是一个图像处理包它还包括相机采集。相机采集Halcon 目前已支持50多个图像采集卡和数百种工业相机,HALCON图像采集接口库构成了图像采集设备制造商提供的软件与HALCON之间的桥梁。它们形成一个通用的通用接口,仅需要少量的运算符。如果您成功安装了图像采集设备,则需要从HALCON对其进行访问,只需调用 operatoropen_framegrabber,指定图像
2021-01-18 20:48:50
634
原创 【0】Halcon - 基础概念
文章目录前言HALCON 简介体系及数据结构体系数据结构iconic dataimagesregionsXLD contourscontrol datahandlesintegersstringsTuple Mode(元组)并行编程HALCON支持的计算设备大图支持图像采集快速入门编程中使用Halcon局限性一般局限性与设备有关的局限性与图像采集有关的局限性OpenGL有关的局限性扩展软件包相关的局限性关于编码主要参考前言安装与获取试用 license 略。本文使用的版本是 Halcon18.11.0
2021-01-18 20:46:49
1624
原创 WIndows/Linux 跨平台编译
文章目录动态库条件编译常用宏动态库参考 Qt 的写法,我们很容易得到以下写法:#ifndef DECL_EXPORT_AMD_DECL_IMPORT#define DECL_EXPORT_AMD_DECL_IMPORT#ifdef _WIN32 #define DECL_EXPORT __declspec(dllexport) #define DECL_IMPORT __declspec(dllimport)#else #define DECL_EXPORT #
2021-01-03 20:41:44
1265
原创 qBreakpad - LINUX捕获程序崩溃异常
本文关键字:qBreakpad,Breakpad,Qt,Linux,跨平台C++崩溃检测库,dmp... 由于项目需求,最近了解了下Google - Breakpad,并了解了其dmp的生成及使用。本文主要记录linux下的编译及其使用,同时记录一下qBreakpad的一些坑~
2020-12-10 20:03:37
2680
3
原创 统计工程代码行数
WindowsVS编辑 - 查找与替换 - 在文件中查找 - 输入以下正则 - 查找全部b*[^:b#/]+.*$Linuxfind . "(" -name "*.pro" -or -name "*.ui" -or -name "*.cpp" -or -name "*.h" ")" -print | xargs wc -l
2020-12-09 13:52:01
280
1
原创 ARM_Linux - 制作嵌入式远程调试工具(gdb + gdbserver)
为arm-linux sdk 增加gdb调试工具,从gdb源码开始编译,生成gdb及gdbserver,并将其配置至QtCreator实现远程调试。
2020-12-04 21:19:00
1054
1
原创 Qt - 如何在文件中插入数据
前言文件读写QFile字节流插入数据方法一读取所以内容,修改,写回。方法二只读打开原文件,只读遍历各行,同时写到新文件,找到插入位置,记录位置,写入内容,关闭文件,删除原文件,重命名。...
2020-11-26 19:58:03
4663
12
原创 Qt - QNetworkAccessManager 超时机制
API请求返回慢之前在使用翻译API时有时候会遇到请求很慢的情况,但是Qt的 QNetworkAccessManager 并未提供超时处理的方法。可见:QNetworkAccessManager timeout and request time超时机制参考自:QNetworkReply and QNetworkAccessManager timeout in http requestQt之处理QNetworkAccessManager网络连接超时源码// QReplyTimeou
2020-11-23 21:09:25
4089
原创 Qt - QProcess实现与外部程序交互(cmd)
文章目录创建及启动SIGNAL&SLOTreadyRead()readyReadStandardOutput()errorOccurred(QProcess::ProcessError)finished(int)CMD指令写入参考鸣谢创建及启动 QString program = "cmd.exe"; mProcess = new QProcess; //合并输出通道 mProcess->setProcessChannelMode(QProcess::Merg
2020-11-17 20:11:25
4991
原创 Qt - THelper (Translation Tool)
QT 翻译工具,已接入百度翻译API及腾讯AI公共平台-机器翻译API。详细介绍了原理及编码实现,所以代码均已开源,使用方法见GitHub-README.md。大概是位数不多的使用Qt实现腾讯AI公共平台-机器翻译API接入的DEMO...
2020-11-11 20:50:57
1152
2
原创 STM32 程序入口
STM32 的启动需要依赖启动文件,不同编译器的启动文件不同,这里以 startup_stm32f407xx.s 为例,它主要进行了以下工作:初始化堆栈指针 SP=_initial_sp初始化指针 PC=Reset_Handler初始化中断向量表配置系统时钟调用C 库函数 _main 初始化用户堆栈,从而最终调用 main()复位子程序是系统上电后第一个执行的程序:; Reset handlerReset_Handler PROC
2020-11-10 20:18:37
798
原创 Qt - exe添加管理员权限
文章目录QTCreatormingw32编译器MSVC编译器QT+VS其实很简单,其实并不难。- 《空白格》QTCreatormingw32编译器可参考 使 Windows 下的 Qt 应用程序获得 Administrator 权限MSVC编译器pro中加入:QMAKE_LFLAGS_WINDOWS += "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\""若修改后无错误也无效,修改一下构建目录即可。修改完构
2020-11-10 20:04:53
908
2
原创 RTThread(一) - 概念及简介
文章目录前置说明RTThread框架线程管理及调度器线程间通信管理时钟管理内存分布内存管理动态内存堆管理静态内存池管理RTT启动过程自动初始化机制内核对象管理架构内核配置&剪裁前置说明一般单片机一般只有一个核心,做多线程实际上是 分时复用 CPU,是并发的。线程通常是指操作系统上的概念,而本文介绍的实时操作系统 RTThread 的线程个人感觉应该称之为 任务 更合理,但为了和官方说法一致,以下仍叫线程。主要参考: RTThread 内核基础RTThread框架与其他 RTOS 不同,R
2020-11-09 21:34:20
29786
5
原创 C/C++ - 回调函数的实现
文章目录函数指针C++虚函数bink & function参考鸣谢项目中有时候能遇到一些回调函数,于是思考其实现方法,顺便找了一下其他实现方法,简单总结一下:函数指针关于函数指针,有趣的是: Why do function pointer definitions work with any number of ampersands ‘&’ or asterisks ‘*’?下面直接看 demo,这里模拟的是外部 lib 及使用的的使用方法://CallBack 1 /******
2020-11-04 21:10:02
1260
原创 Qt - 鼠标事件&键盘事件&定时器事件
文章目录前言鼠标事件.hmousePressEventdragEnterEventdropEvent键盘事件.hkeyPressEventkeyReleaseEvent焦点问题多按键检测原理实现改进定时器事件前言该篇作为学习Qt事件系统的前导篇,主要介绍最常见的三个事件的使用。鼠标事件参考文档:Drag and Drop参考例程:Draggable Text Example 、 Draggable Icons Example鼠标移动事件只会在按下鼠标按键的情况下才会发生,除非通过显式调用 QWi
2020-11-02 20:15:27
1852
原创 Qt - 源码跟踪一个QtCreator就够了
由于安装Qt时并没有选择下载源码,所以在QtCreator中无法查看源码,只能看看头文件的样子。查看源码都是到Woboq,但是又经常需要跑到QtClass文档中查看翻阅...有时还会手动跟踪错,然后就卡住了。直到今天看到一位Blogger在QtCreator中跟踪,通过调用栈直接查看调用关系,看得我直呼内行!下面和我一起来配置一下,还解决了英语菜鸟查看Class文档时的痛点哦。
2020-10-30 20:27:11
2831
原创 Qt - 国际化小结
常见流程将需要翻译的字符串加上 tr( ) 。若没有在 QObject 子类的成员函数中,那么可以直接使用QCorerApplication::translate( ) 函数亦或 QT_TR_NOOP( ) 宏和 QT_TAANSLATE_NOOP( ) 宏。这两个宏仅对文本进行标记来方便 lupdate工具 提取。通过 Qt Linguist 翻译应用程序运行 ludata工具,提取要翻译的文本,生成 .ts 文件,这个文件是 XML 格式的。打开 Qt Linguist 进行翻译。运行 lr.
2020-10-17 10:54:36
414
1
原创 Qt - QTChart绘制图表
主要介绍QT Chart ,包括该组件的主要构成;常见的一些属性设置及交互,动态图表的实现,如何解决卡顿问题。
2020-09-26 21:43:04
18026
4
原创 VS - 程序调试(release - debg & dll project exe debug)
文章目录前言Release dugExe debug前言Release dugExe debug
2020-09-22 20:49:32
336
原创 JS - 4字节转单精度浮点数
文章目录JS 数据类型IEEEE475Sign(符号位)Exponent(指数位)Significand(小数位)转换公式转换方法在线工具参考鸣谢JS 数据类型JS 是一种弱类型的语言,它的数据类型包含字符串值,数值,布尔值,数组,对象。虽然我们的数值类型包含浮点数整数等,但是在这里统称为 数值类型。同时 JavaScript 拥有动态类型,我们定义变量时无须指定数据类型。这也意味着我们的强制转换在JS中将失效。若在 C/C++ 中,可以通过内存转换或联合体实现。但在 JavaScript 中这些方
2020-07-20 20:04:12
4060
3
原创 TBB交叉编译踩坑之旅
目前暂未在网络上看到详细介绍TBB库交叉编译的教程,本人基本是摸着石头过河....在此将遇到的坑及解决方法记录下来,希望能解决你的困扰。
2020-07-14 13:34:58
3217
4
原创 Ubuntu - 内核编译及替换
文章目录下载地址解压下载依赖配置内核编译安装模块安装内核重启查看内核版本GNU GRUB参考鸣谢下载地址北交大开源镜像欢迎您解压tar -xvf linux-5.7.7.tar.gz 注意:Linux 内核解压,不能在共享文件夹下解压否则会出现如下错误:Cannot create symlink to `xxx': Operation not supported下载依赖配置内核之前需先安装以下依赖:sudo apt-get install ncurses-devsudo apt-ge
2020-07-08 21:18:21
2001
GammaRay.7z
2021-10-19
ListView_updata_demo.zip
2019-09-03
智能花盆2.0源码
2019-05-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人