很常见的一种需求,但是很可惜Qt没有一种比较简单的实现方式。在网上找了很多资料也没有找到,实现方法比较复杂,但是经过 我的实验,下面这种方法是可行的,而且有很多意想不到的好处。 定义接口类 存储当前hovered行,split行是实现其他需求的可以不考虑 class IVie...
Qt json文件读写
Qt提供了处理JSON数据的支持。JSON是一种数据编码格式派生自Javascript,现在在internet上广泛用作数据交换格式。 Qt中的JSON支持提供了一个易于使用的C++ API来解析、修改和保存JSON数据。 它还支持以二进制格式保存数据,这种格式可以直接“mmap”,而且访问速度非常快。 简...
字符编码的故事
很早之前看过的文章,转载过来记录下。 字符编解码的故事(ASCII,ANSI,Unicode,Utf-8) 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们认为8个开关状态作为原子单位很好,于是他们把这称为"字节"。 再后来,他们...
qt.network.ssl: QSslSocket Qt支持SSL https
Qt使用QNetworkAccessManager类时默认是不支持https协议的,需要增加openssl动态库。 我发现新版本的Qt和老版本的Qt所需要的openssl库的名字竟然不一样。 老的是:libeay32.dll、ssleay32.dll 新的是:libcrypto-1_1.dll、libssl-1_1.dll 具体的文件可以在QtCreato...
腾讯OCR文字识别API调用
根据用户上传的图像,返回识别出的字段信息。 腾讯AI开放平台地址:https://ai.qq.com/console/capability/overview package main import ( "bytes" "crypto/md5" "encoding/base64" "encoding/json" "fmt" _ "github.com/jinzhu/gorm/dialects/mys...
删除数据库中没有使用到的图片
有个web/upload目录下有许多图片,但是很多图片是测试时产生的在博客文章中并没有使用,所以写个小程序判断哪些图片没有用到然后删除。 步骤 1. 连接数据库 2. 读取目录下的所有图片 3. 根据图片名字在数据库中查找 4. 如果没有找到文章就删除图片 源码...
QtCharts使用
QtCharts是Qt的图表模块在Qt5.7版本之后才包含进来的,之前的版本需要下载源码单独编译。 介绍几个重要的类: QChart:Qt图标的核心类,建立在图形视图之上的,管理各个图表部件 QChartView:是一个独立的widget用来展示QChart QDateTimeAxis:日期时间轴 QValue...
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
用新的visual studio 2017或者2019来编译老代码(vs2013),Debug的时候发现QString的toStdString和toStdWString方法触发以上错误(Release没有问题),换成下面两个转换函数就没问题了: std::wstring towstring(const QString& str) { std::wstring result; resul...
sqlite3 安装、开发
SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine. SQLite is the most used database engine in the world. SQLite is built into all mobile phones and most computers and co...
log4cxx OutputDebugString DebugView
log4cxx常用appender有ConsoleAppender输出到控制台,RollingFileAppender输出到文件。 在GUI程序中使用log4cxx时,要想能实时看到输出日志一般用windows函数OutputDebugString,log4cxx console appender是显示不出来的。 所以如果log4cxx的日志能向OutputDebugSt...
多线程锁key处理
目的是要保证多个线程处理同一个key的消息时是线程安全的,同时是顺序的。 1. 收到网络过来的消息,将消息缓存到total msg cache里 2. 解析业务消息找到每条数据的key(可能一条或多条)存储在set中 3. 将所有key进行hash,对最大线程数进行取余,获取所有线程索引std::se...
golang 控制goroutine调度顺序
使用go关键字就可以很容易的启动一个goroutine,启动后他们的执行顺序是不能保证的。如果有多个goroutine,怎样按照我想要的顺序来执行呢? 如: a1在b1和c1后面执行(b1和c1都执行完a1才能执行) d1在a1后面执行(d1执行完才能执行a1) e1在b1或者c1后面执行(b...
localtime线程不安全造成的线上问题
线上出现了一个比较奇怪的问题,日期B的时间赋值给了日期A,但是浏览代码发现根本没有这样的逻辑。 经过一番调查基本能确定是localtime函数线程不安全造成的。 下面使用demo来模拟一下出现问题的情况 t1和t2是两个时间,使用GetTimeString转换的时候t2的时间可能会赋...
快速遍历磁盘
快速遍历磁盘,不用遍历每个目录,主要使用DeviceIoControl 函数 需要用管理员权限运行 [参考链接](https://docs.microsoft.com/en-us/windows/win32/DevIO/calling-deviceiocontrol) 使用命令行工具也可以遍历出所有文件: 注意C盘需要管理员权限 dir c:...
编程语录
纠错前先思考。如果你一头扎进问题中,你可能只解决了当前出现问题的代码,但如果你先思考这个错误,这个 bug 是怎么引入的?你通常发现和纠正一个更高层次的问题,进而改进了系统设计,防止了更多 bug 的出现。 ...
golang设置桌面壁纸
golang语言编写,设置windows桌面壁纸,图片来自于必应网站(cn.bing.com) github源码地址:[https://github.com/tujiaw/gowallpaper](https://github.com/tujiaw/gowallpaper) 有兴趣的Star一下吧 编译好的程序:[https://pan.baidu.com/s/1l5OW9GeuUF0r5TFaBW...
QWidget QLabel没有响应keyEvent键盘事件
在Qt中我们经常通过重写下面两种虚函数来实现按键事件 virtual void keyPressEvent(QKeyEvent event); bool eventFilter(QObject watched, QEvent event); 但是有时候会遇到无法触发的情况(特别是QWidget,QLabel),这个时候我们会考虑是不是被父窗口给截获了没有传...
Mac安装国内版homebrew
HomeBrew是macOS和linux平台的包管理工具 由于大家都知道的原因,安装官方的homebrew下载速度很慢,所以这里找了个国内版本的试下,速度非常快。 安装方法 粘贴下面的脚本到终端命令行界面,直接回车安装,后面选择1就可以了 /bin/zsh -c "$(curl -fsSL https://gi...
malloc_trim和SetProcessWorkingSetSize两个神奇的内存相关函数
它们两个其实没有什么关系,相似之处是调用这两个函数后内存会有明显的下降,但是原理完全不同。 malloc_trim linux平台的函数,官方的解释是:从堆释放可用内存。 在程序中堆上new或者malloc的内存我们都会delete和free掉,由于linux的机制它们并没有立即将释放的内存...
vim常用技巧
Linux生产环境上,最常用的一套“vim“技巧原创 -------------------------- 研发线上使用最多的编辑器,就是vi。无论是最快查看某个文件内容,还是快速编辑某个文件,vi都能帮上忙。 软件世界貌似有一些非常长寿的东西,vi算是一个。本篇文章聚焦的是研发线上最常用的一些...