- 博客(100)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注
原创 QSettings用法总结
用户对应用程序经常有这样的要求:要求它能记住它的settings,比如窗口大小,位置,一些别的设置,还有一个经常用的,就是recent files,等等这些都可以通过QSettings来实现。这些settings一般都是存在系统里的,比如windows一般都写在系统注册表或者写INI文件,mac系统一般都在XML文件里,那么按照一般的标准来说,许多应用程序是用INI文件来实现的。而QSettings就是提供了一种方便的方法来存储和恢复应用程序的settings。当我们创建一个Qsettings的对象
2021-07-06 14:58:37 382
原创 Qt之sql数据库系列操作
1)工程设置:QT += sql2)创建或打开数据库。 if(QSqlDatabase::contains("qt_sql_default_connection")) { database = QSqlDatabase::database("qt_sql_default_connection"); } else { QString path = QApplication::applicationDirPath();
2021-07-06 14:37:48 522
原创 mupdf源码分析(九)显示之小部件渲染
本章主要介绍mupdf标注渲染,接口是fz_run_page_annots ,下面是具体实现过程。接口说明请参考上一章的fz_run_page_contents接口。接口实现是通过pdf_run_page_annots->pdf_run_page_annots_with_usage接口实现。
2021-06-02 11:28:45 630
原创 mupdf源码分析(八)显示之标注渲染
本章主要介绍mupdf标注渲染,接口是fz_run_page_annots ,下面是具体实现过程。接口说明请参考上一章的fz_run_page_annots
2021-06-02 11:11:15 967
原创 mupdf源码分析(七)显示之页面渲染
本章主要分析mupdf页面内容的渲染,接口是fz_run_page_contents,下面将详细介绍这个接口。接口声明/**接口说明:在一个设备上渲染一个页面。只有主页内容,没有注释* page 页面对象*dev 渲染设备对象* transform 转换矩阵* cookie 与调用方的通信机制*/void fz_run_page_contents(fz_context *ctx, fz_page *page, fz_device *dev, fz_matrix tra..
2021-06-01 18:15:57 1219
原创 mupdf源码分析(六)显示之大致流程
这一章主要描述了mupdf渲染页面资源,标注,和小部件的大致流程,详细流程将在后面的章节详细描述。1,渲染页面资源1.1)创建空页面显示链表 fz_display_list 对象,app->page_list = fz_new_display_list(app->ctx, fz_infinite_rect);1.2)为页面显示链表创建渲染设备 fz_device对象mdev = fz_new_list_device(app->ctx, app->page_list);具.
2021-06-01 15:45:31 1155
原创 mupdf源码分析(五)加载文档之页面加载
这一章将详细讲解 fz_load_page接口的实现流程。此接口主要实现了根据页面索引加载指定页面资源,填充fz_page对象。1,获取文档章节数fz_count_chapters(ctx, doc);//n = 12,计算每个章节的页码数,int m = fz_count_chapter_pages(ctx, doc, i);3,加载页面资源,fz_load_chapter_page(ctx, doc, i, number - start);3.1)遍历所有已加载的页面链表 f...
2021-06-01 15:14:56 1304 1
原创 PDF之文档结构
PDF 文档可被视为 PDF 文件正文部分所包含的对象层次结构。在层次结构的根部,是文档目录字典,可通过 PDF 文件的尾注中的 Root 条目定位。目录包含对定义文档内容、大纲、文章线索、已命名目标和其他属性的其他对象的引用。 ...
2021-04-08 17:28:37 1452
原创 PDF之文件结构
PDF文件应有以下四个元素构成:1)一行文件头,标识文件所符合的PDF规范版本。2)正文,包含了组成文件中所含文档的对象。3)一个交叉引用表,包含关于文件中间接对象的信息。4)尾注提供交叉引用表和文件正文某些特殊对象的位置。1,文件头,PDF 文件的第一行应是一个文件头,包含 5 个字符 %PDF- ,后跟 1.N 形式的版本号,其中 N 是 0 到7 之间的数字。如果 PDF 文件包含二进制数据,大多数文件都是这样,那么文件头行之后应紧跟一个注释行,其中包含至少 4 个二进制字符,
2021-04-07 15:56:17 747
原创 PDF之过滤器简介
过滤器,在读取流数据时的一个选项是用过滤器对它进行解码,生成原始的未编码数据。流的一个或多个过滤器应由流字典中的Filter条目指定,过滤器可以级联,通过依次执行两次或者多次编码转换形成传递流的管道。示例:/Filter [/ASCII85Decode /LAWDecode]。标准过滤器包括:ASCIIHexDecode,ASCII85Decode,LZWDecode,FlateDecode,RunLengthDecode,CCITTFaxDecode,JBIG2Decode,DCTDecode,JPX
2021-04-07 10:10:31 1367
原创 PDF之基本对象类型
PDF包含8种基本的对象类型:布尔值,整型和实数,字符串,名称,数组,字典,流,null对象。1,布尔对象,布尔对象表示真和假的逻辑值。显示为关键字true和false。2,数字对象,PDF提供了两种类型的数字对象:整型和实数。整数对象表示数学上的整数,书写为一个或多个十进制数,可选择在前面添加一个符号,示例:123,4123,+19,-98,0。实数对象表示数学上的实数,书写为一个或多个带有可选的正负号,以及一个前导,结尾或嵌入的句点(小数点)的十进制数,示例:34.5,-3.63,+123.6,
2021-04-06 17:35:00 1421 1
原创 #define 定义多行
今天项目中需要定义一个宏,展示多行代码。#define 定义一行很简单,定义多行还是有点麻烦的,下面根据代码讲解我遇到的一些坑。自定义结构体InternalTimetypedefstructInternalTime{structtimevaltimeStart;structtimevaltimeEnd;}InternalTime;1,定义一行#defineGetStartTime(internalTime)gettimeofday(&...
2021-03-30 17:01:02 1730
原创 十六进制RGB分色值转unsigned int
现在需要将R,G,B 三个分量的值成一个unsigned int 型的RGB值。int colorR = 255;int colorG = 254;int colorB = 253;unsigned int color = 0;color = colorR<<16&0xff0000;color += colorG<<8&0x00ff00;color += colorB&0x0000ff;...
2021-03-25 18:49:59 322
原创 十六进制字符串转整型
最近做个项目需要将十六进制字符串转成整型,具体实现如下:1,字符串统一转小写int tolower(int c) { if (c >= 'A' && c <= 'Z') { return c + 'a' - 'A'; } else { return c; } } 2,字符串转整型int htoi(char s[]) { int ...
2021-03-25 18:37:00 2486
原创 mupdf源码分析(四)加载文档之文档初始化并加载交叉引用表
这一章将详细分析一下pdf_init_document(fz_context *ctx, pdf_document *doc)接口的内部调用逻辑。此接口主要实现文档初始化并加载交叉引用表的功能。1,解析文档版本 范围:1.0-1.7 ,pdf_load_version(ctx, doc);//操作文件流,读取首行解析文档版本2,如果线性文件标志为真,加载线性文件,pdf_load_linear(ctx, doc);后续章节会详细介绍线性文件过程。3,判断是否是线性文件,pdf_check_li.
2021-03-15 14:32:07 788
原创 mupdf源码分析(三)加载文档之详细流程
pdf文档的加载流程由pdfapp_open----》pdfapp_open_progressive接口实现,原型:void pdfapp_open_progressive(pdfapp_t *app, char *filename, int reload, int kbps);接下来具体分析一下这个函数的实现流程。1,注册处理程序为支持的所有标准文档类型fz_register_document_handlers(ctx);//支持pdf,xps,svg,cbz,img,fb2,html,x..
2021-03-12 18:15:47 2076
原创 vc 打开文件对话框获取选择文件路径
#include<Windows.h>int getfilename(wchar_t *buf, int len){ OPENFILENAME ofn; buf[0] = 0; memset(&ofn, 0, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = NULL;//窗体父类 ofn.lpstrFile = buf;//文...
2021-03-03 11:37:12 359
原创 win32 获取系统dpi
#include <windows.h>//获取系统dpiint get_system_dpi(void){ //加载系统库user32.dll HMODULE hUser32 = LoadLibrary(TEXT("user32.dll")); SetProcessDPIAwareFn *ptr; int hdpi, vdpi; HDC desktopDC; //获取SetProcessDPIAware系统函数地址 ptr ...
2021-03-03 11:28:32 781 1
原创 mupdf源码分析(二)加载文档大致流程
mupdf源码工程是以vs2015为蓝本的,mupdf版本为1.18.0。一,入口函数:int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)。二,获取系统dpi:int displayRes = get_system_dpi();三,创建fz_context 对象:ctx = fz_new_context(NULL, NULL, FZ_STORE_DEFAU.
2021-03-03 11:18:41 1287
原创 mupdf源码分析(一)简介
1.概述 MuPDF是一个轻量级的pdf,xp和电子书阅读器。 MuPDF是一个跨平台的软件,可以在windows,linux和国产化平台下运行。 MuPDF由依赖的各种软件库,命令行工具和查看器组成。2.优势 小巧,快速,完整: 软件功能简单,满足各种文档格式,如PDF,XPS,OpenXPS,CBZ,EPUB等。 软件页面渲染速度快。 不需要依赖其他的软件和平台,单独可以完成文档的阅读功能。3.libmuf库 此模块是Mupdf实现...
2020-07-30 17:07:16 6151
原创 jni 交叉编译 android 平台下使用
一,准备工作:1)下载android ndk包,解压2)下载交叉编译工具链 1,cd ./android-ndk-r15c 2,./build/tools/make-standalone-toolchain.sh --package-dir=/home/fxb/open_source/ndk_tools/ --toolchain=arm-linux-androideabi-4.8 3,tar xjvf arm-linux-androideabi.tar.bz2 ...
2020-05-29 17:30:11 256
原创 curl CURLOPT_WRITEDATA CURLOPT_WRITEFUNCTION 回调函数
最近用libcurl开源库做了一个项目,关于接收请求返回数据的回调函数,是我的一点想法。1,curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HttpPostWriteBack);HttpPostWriteBack是回调函数指针,需要自己实现原型为:unsigned int HttpPostWriteBack(void *contents, siz...
2019-10-15 18:01:37 8788
原创 磅 英寸 厘米 dpi 像素
概念:1,磅:是印刷设计中文字大小的单位point的音译,中文正确翻译为“点”,缩写为pt。物理单位,1pt = 1/72英寸2,英寸:英寸(吋)是使用于联合王国(UK,即英国(英联邦)及其前殖民地的长度单位,在英制里,12英寸为1英尺,36英寸为1码。 物理单位,1in=2.54cm3,厘米:一个长度计量单位,等于一米的百分之一。物理单位,1cm=1/2.54in4,dpi:图像...
2019-07-19 15:58:38 756
原创 QMessageBox::warning ok 确定
QMessageBox::warning(this,tr("tip"),tr("page has rotated,please recorver the angle"),tr("Ok"));QMessageBox::warning(this,tr("tip"),tr("page has rotated,please recorver the angle"),QStringLiteral("确定...
2019-07-19 15:22:32 1539
原创 QPainter QPixmap 抗锯齿
在paintEvent(QPaintEvent *)实现函数里绘制图片出现边缘锯齿解决办法:pixmap.loadFromData(sealImage,sealImageLen);pixmap = pixmap.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);painter.setRenderHints(...
2019-07-19 15:16:55 3988 1
原创 QT 国际化
QT 实现国际化步骤:一,将要实现国际化的字符串tr()包裹,ex:二,在.pro添加相应的翻译文件:TRANSLATIONS += Resources/qm/zh.ts \ Resources/qm/en.ts三,点击“工具-》外部-》QT预言家-》更新翻译”,生成相应的en.ts和zh.ts四,编辑相应的zh.ts文件,ex:五,点击...
2019-07-19 15:06:08 174
原创 OCX skipping event interface _XXX_AXEvents 事件处理
最近做签章客户端的项目,需要调用外部提供的ocx插件,界面框架为QT。ocx控件QT进行调用没有问题 ,在skipping event interface _XXX_AXEvents 遇到了拦路虎,怎么处理能接收到ocx发出的一些信号呢?因为我有c#调用OCX的源码,可以看到事件的接口参数,QT 的消息机制是信号和槽,所以我就在想,在QT框架内,事件就相当于信号,我只需要根据参数 实现相...
2019-07-05 10:44:38 416 1
原创 libcurl http请求的例子
size_t req_reply(void *ptr, size_t size, size_t nmemb, void *stream){ std::string *str = (std::string*)stream; (*str).append((char*)ptr, size*nmemb); return size * nmemb;} std::s...
2019-04-09 16:51:31 454
原创 libcurl源码下载及编译
1,libcurl源码下载地址https://curl.haxx.se/download.html2,打开CMake 工具,输入源码目录以及要生成的工程工程目录3,点击“Configure”,配置选项4,然后一路下去,进行一系列的配置(可能会出现警告,配置时间比较长请耐心等待)5,配置完成后,点击“Generate”,就可以生成相应的工程了。6,打开生成的工程...
2019-04-09 16:27:04 7724
原创 QDialog 去掉标题栏问号按钮
Qt::WindowFlags flags=Qt::Dialog;flags |=Qt::WindowCloseButtonHint;setWindowFlags(flags);
2019-04-09 16:04:17 7081
原创 c语言读写二进制文件
1,写二进制文件:FILE *f_out= NULL;//声明文件句柄f_out= fopen("c://aaa.txt","wb");//打开文件句柄if(f_out == NULL) return;fwrite(dataArray,sizeof(unsigned char),count,f_out);//写数据,参数:源数据,块大小,数据长度,文件句柄f...
2019-04-03 14:12:33 6193
原创 QPrinter QPrintDialog QPrintPreviewDialog 打印PDF文件
近期做了一个项目,这个项目需要调用QT 的通用接口实现跨平台打印pdf文件,遇到了一些坑特此纪录一下。1, QPrinter printer(QPrinter::ScreenResolution);//构造打印对象 printer.setPageSize(QPrinter::A4);//页面设置 printer.setOrientation(QPrinter::Port...
2019-03-29 14:16:47 3398
转载 关于QT中奇数个汉字出现newline in constant的错误
前面写了一篇关于QT中使用汉字的博客以为对汉字的使用了如指掌, 没想到今天把字符串一换, 换成偶数个没问题, 换成奇数个汉字, 哇擦, 报一个错误newline in constant, 瞬间意识到自己还是太年轻.好了, 开始正题先说下 在QT Creator可能出现的乱码的情况:1. 打开文件时, 汉字就是乱码, 这种情况是因为你向文件写汉字的时候,文件是一套编码(比如GB2312)...
2019-02-26 16:09:44 988
转载 Linux 系统下 CodeBlocks安装与使用
1.安装1)sudo add-apt-repository ppa:damien-moore/codeblocks-stable输入密码后,会提示你敲【Enter】继续,然后如果一切OK的话,就会安装好这个ppa源。继续敲:2)sudo apt-get update对源进行更新,这个过程会下载一些东西,请保持网络畅通。最后,开始安装:3)sudo apt-get install cod...
2019-01-03 14:24:12 1366
原创 QT 调用OCX控件
近期做一个项目,需要调用Foxit的PDF OCX控件,现记录一下过程。首先,被调用的OCX控件必须被注册,注册过程请参考https://mp.csdn.net/postedit/85101655。接着进行如下步骤:一,获取OCX 的uuid: 1)找到oleview.exe,以管理员身份打开。oleview..exe一般路径C:\Program Files (x86)\W...
2018-12-19 17:40:14 4365
原创 VS2015 不支持 vs-addin
由于vs2015以后的版本不再支持addin插件,所以QT VS-addin就没用了,vs提供了新的替代插件Qtpackage,https://marketplace.visualstudio.com/items?itemName=havendv.QtPackage
2018-11-14 16:27:32 1263
原创 构造函数和析构函数小结
构造函数是一种特殊的类成员函数,在创建类对象时被调用。构造函数的名称和类名相同,但通过函数重载,可以创建多个同名的构造函数,条件是每个函数的参数列表都不同。构造函数没有声明类型。Bozo(const char *fname,const char *name);//构造函数原型初始化新对象:1. Bozo bozettoa = Bozo("Bozetta","Biggens");2....
2018-11-13 17:53:38 238
原创 TortoiseSVN文件夹及文件不显示图标
最近安装了一些软件,突然发现原先使用的svn归档文件夹没有了svn版本控制的一些图标非常不舒服,查了一些资料,解决方案如下1)win + R 输入regedit 打开注册表管理器2)按照指示找到下列位置 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayId...
2018-11-13 14:44:26 446
原创 vs2015:提升应用程序为管理员权限
有些应用程序运行需要管理员权限,最好在打包的时候提升为管理员运行。步骤如下:1.右键打开属性对话框2.打开linker-->Manifest File3.编辑 UAC Execution Level 4.选择 最后一项OK,结束...
2018-11-08 09:56:54 3976
pkcs#7- 加密消息语法标准 - 中英双版.zip
2020-03-04
Qt控件怎样实现拖拽控制大小?如设计器一样的效果
2021-07-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人