自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(260)
  • 收藏
  • 关注

转载 qt-C++语法笔记之mapToGlobal将组件(控件)中的本地坐标系(局部坐标)映射到全局坐标系

在 Qt 中,mapToGlobal 是 QWidget 类的一个函数,主要用于将控件的局部坐标(local coordinates)映射到屏幕上的全局坐标(global coordinates,通常是以屏幕左上角为原点的坐标系)。它的主要作用是将局部坐标(以组件左上角为原点的坐标系)转换为屏幕上的全局坐标。全局坐标:通过 mapToGlobal 转换后,这个点在屏幕上的绝对位置应该是 (300 + 50, 200 + 30) = (350, 230)。// 输出屏幕上的全局位置。

2025-04-01 21:34:32 10

转载 Windows下安装VS2013无法识别、自动补全Qt的对象

最后重启vs发现好了,不知道这次还会不会出问题,好吧,办法总比困难多,如果需要长期使用小番茄的,可以好好了解一下小番茄的使用,这样解决问题思路也会更多一些,我这里也是在网上查找的一些方法进行尝试解决问题的。Windows下安装VS2013+Qt5.7.0构建Qt开发环境搭建及解决小番茄无法识别、自动补全Qt的问题。©著作权归作者所有:来自51CTO博客作者逍遥游10的原创作品,请联系作者获取转载授权,否则将追究法律责任。首先,改进增加Qt库头文件的方式​​ ​​​。

2025-02-27 22:09:44 19

转载 QWebChannel实现与JS的交互

在使用Qt(C++)和JavaScript之间实现通信时,通常会使用一些模块和技术来使两者能够交互和传递数据。作用:除了上述Qt提供的模块,还可以使用其他桥接技术来实现JavaScript与C++之间的通信,如Embind、Boost.JS等。作用:Qt WebEngine是Qt中的Web引擎,允许在Qt应用程序中嵌入Web内容,包括JavaScript脚 本。这样,您可以在Qt中暴露C++对象,使其可以在JavaScript中访问,反之亦然。这样可以实现更紧密的集成和通信。// F12 调试窗口。

2025-02-10 14:31:04 42

转载 cmake---常用的cmake函数的简单介绍

以下代码说明:创建submit-p0对象,将变量${P0_FILES}所代表的文件,使用zip命令打包成名为project0-submission.zip的压缩包,工作目录为变量${CMAKE_CURRENT_SOURCE_DIR}add_custom_target() 是 CMake 中的一个命令,用于定义一个自定义的目标(target),这个目标通常用于执行一些非编译相关的任务,比如清理临时文件、生成文档、运行测试脚本等。install() 是 CMake 中用于指定如何安装目标、文件和目录的命令。

2025-02-04 22:38:51 24

转载 CMake定义头文件路径、链接库路径及链接选项:PRIVATE,INTERFACE,PUBLIC

生成 libhello-world.so 时,只在libhello-world.so 对外的头文件——hello_world.h 中包含 了 hello.h, hello_world.c 中不包含 hello.h,即 libhello-world.so 不使用 libhello.so 提供的功能,只使用 hello.h 中的某些信息,比如结构体。PUBLIC:公开的。生成 libhello-world.so 时,在 hello_world.c 和 hello_world.h 中都包含了 hello.h。

2025-02-04 22:07:47 306

转载 初学Qt不会样式表怎么办,打包好的Qt样式表一键生成送给你

很多人应该和我一样,想做界面才接触的Qt,结果就是做不出来华丽的界面,想给控件上个色?不会,百度半天,好不容易给控件添加了背景色,下一个控件又不会了,别急,这次福利来了,我将平时用到的样式表做了一个总结,并做了一个一键生成,调节数据就可以实时显示,里面包括了Label,LineEdit,PushButton,CheckBox,RadioButton,ScrollBar,Slider,Progressbar,Tabwidget,ToolBox,TabWidget控件的自定义。

2025-01-25 12:04:59 63

转载 Qt工程pro文件配置详解

因此我们可以知道,这个新的文件不是“替换”掉旧的文件,而是与原文件一起参与编译。另外,我们还可以看出一点,moc 的执行是在预处理器之前。默认情况下,QT 包含 core 和 gui,以确保标准的 GUI 应用程序无需进一步的配置就可以构建。qmake 会自动检测是头文件的类中是否需要 moc,并增加适当的依赖关系和文件到项目中,来生成和链接 moc 文件。Windows 上 qmake 正确处理库(也就是说,将库的完整路径传递给链接器),库必须存在,qmake 会寻找-l 指定的库所在的目录。

2025-01-25 12:03:34 19

转载 pri文件详解

在Qt项目中,pri文件(.pri)是一种类似于makefile的文件,用于定义Qt项目中的编译规则。对于QT项目,默认情况下所有的文件都是在同一个文件夹下进行开发的,当做一个项目规模相对较大的时候,文件很多导致维护及其困难,所以pri对文件模块化开发至关重要,pri进行模块化无非就是将相同业务逻辑的代码放到同一文件夹下进行管理。其中,lib.path指定库文件生成的路径,lib.name指定库文件的名称,lib.files指定库文件的源文件,lib.commands指定库文件的生成命令。

2025-01-25 12:02:33 59

转载 CMake中的find_package命令详解:轻松搞定项目构建依赖

CMake是一个强大的构建系统生成工具,它可以根据项目需求自动生成适用于多种平台的构建文件。在CMake中,find_package命令是查找并加载指定的外部库或框架的关键,为项目提供所需的依赖支持。。接下来,本文将详细介绍find_package命令的用法,帮助读者轻松搞定CMake项目构建。

2025-01-25 12:01:18 30

转载 pri文件详解(笔记)

在Qt项目中,pri文件(.pri)是一种类似于makefile的文件,用于定义Qt项目中的编译规则。对于QT项目,默认情况下所有的文件都是在同一个文件夹下进行开发的,当做一个项目规模相对较大的时候,文件很多导致维护及其困难,所以pri对文件模块化开发至关重要,pri进行模块化无非就是将相同业务逻辑的代码放到同一文件夹下进行管理。其中,lib.path指定库文件生成的路径,lib.name指定库文件的名称,lib.files指定库文件的源文件,lib.commands指定库文件的生成命令。

2025-01-22 10:24:05 70

转载 借助qtwinmigrate,实现外部程序调用带QT界面的DLL

使用 windeployqt 拉取 qtdialog.dll 所依赖的文件,并将其一同放置在控制台生成的目录下,运行控制台程序,即可看到控制台程序调起了qt的dll。如 github 无法下载,可使用: https://pan.baidu.com/s/1kG2WGMYb7hk6ppfMqhd8eQ 提取码: 34sh。原文链接:https://blog.youkuaiyun.com/hellokandy/article/details/108835601。如果需要在dll中开发自定义界面的,代码也很简单。

2025-01-21 20:06:32 56

转载 C++关于开源包7zip压缩工具的编译及使用

7-Zip是一款免费开源的压缩与解压软件,基本能够满足绝大多数常见的压缩和解压文件需求,此外还支持了分卷压缩和解压,非常好用。但是调用7-zip库需要用到一个叫bit7z的库,bit7z是一个C++静态库,其封装了简单易用的接口,用于调用7-zip库。首先需要下载以下源码:https://github.com/rikyoz/bit7z下载地址,下载地址同时也附加了一些使用案例代码,入门较为简单。假如是直接使用下载的静态lib库,需要修改此处,防止编译失败。2、分卷压缩文件或文件夹。3、7zip的实现效果。

2025-01-16 21:07:37 63

转载 【cmake学习】set_target_properties 常见属性以及获取target 属性

set_target_properties 的作用是设置目标的属性,可以是目标文件输出的名称或者目录、目标文件的版本号。set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) # 执行文件。message("= test_lib_static的_STATUS_STATIC_属性: ${var_static}")# 为目标 test_lib_static 创建属性 _STATUS_STATIC_,并赋值为 static。

2025-01-10 15:55:48 123

转载 set_target_properties 常见属性以及获取target 属性

例如,在 GNU 汇编器中,默认的目标文件后缀名是 .o,如果 CMAKE_ASM_OUTPUT_EXTENSION 设置为 .obj,则在设置 CMAKE_ASM_OUTPUT_EXTENSION_REPLACE 为 TRUE 后,CMake 将自动将后缀名更改为 .o。因此,obj文件通常是编译、链接和调试程序的重要中间产物。例如,当使用GCC编译器时,对于Linux系统,CMake会使用.o作为默认的目标文件后缀名,而对于Windows系统,CMake则会使用.obj作为默认的目标文件后缀名。

2025-01-08 15:06:49 88

转载 cmake target_link_libraries 中的PRIVATE, PUBLIC, INTERFACE 详解

B用private link C, 此时A link B,但是不知道B->C这层关系,可以正常link B. 运行时,A->B->C 时,B找不到C中的函数。linux下没有直接依赖关系,所有的B/C的依赖都会转到到A下,可以用LDD命令验证,此时A只依赖于B, 不见C, 当B中的函数调用C中的函数时,因为没有加载C, 所以报找不到符号错误。解决的办法就是在A link B时,同样也写上C. 但是因为private的原因,A是不知道C中的符号这事,只能强制 link C到A才能解决。

2025-01-08 09:48:36 194

转载 CEF3资源重定向、读取加密资源、读取zip资源

/模仿PC网易云客户端。//把自身路径的\转成/// MessageBox(NULL,szDestinationFile,"硬盘中的文件名",0);//MessageBox(NULL,szNewFileName,"即将新建的文件名",0);//MessageBox(NULL,szNewFileName,"即将新建的文件名",0);// MessageBox(NULL,szFileName,"Zip中的文件名",0);// MessageBox(NULL,szFileName,"Zip中的文件名",0);

2024-09-20 09:47:55 247

原创 Cef调试器说明文档

https://chromedevtools.github.io/devtools-protocol/tot/CacheStorage/#method-deleteCache

2024-09-18 20:26:20 156

转载 自己实现的使用c++解析文本中的emoji表情

1、基本的表情,这类表情的对应utf-8编码又分为两种,例如 哈哈 这个表情的编码是\ud83d\ude04 占了两个字节长度,心 这个表情的编码为\u2764 只占了一个字节长度,这是因为emoji在Unicode中的编码范围不同,有一定的规律可循。3、特殊的数字表情,常见的就是0-9带一个框的,这种的编码又有所不同,例如 1 是1\ufe0f\u20e3,2 是 2\ufe0f\u20e3,规律相同,都是数字后跟\ufe0f\u20e3。解析文本,将emoji表情替换成对应的编码输出出来。

2024-08-29 17:01:31 277

转载 Windows 进程权限浅谈 -- 提权 / 降权

如何以编程方式控制进程的执行级别?如果登录用户是管理员账户,且开启了UAC,那么默认情况下双击一个程序时是以medium权限运行,称为受限的管理员权限,如果右键程序“以管理员权限运行”,那么程序是high权限,称为不受限的管理员权限。以产品更新为例,大部分时候产品主程序以在标准(非提升)级别运行,为了能够自我更新,它需要启动一个单独的更新进程,该更新进程需要提升才能正确执行升级。还是以产品更新为例,当以提升级别运行的更新程序完成更新任务,需要启动产品主进程,以标准(非提升)级别运行,此时则需要降权。

2024-07-24 17:43:16 354

转载 通过 pFont 中lfHeight 转换成 CHARFORMAT2 中的字体高度 yHeight

考虑DPI映射比例,LOGFONT::lfHeight单位是像素;CHARFORMAT2::yHeight单位是1/1440英寸或1/567厘米(现实长度。原文链接:https://blog.youkuaiyun.com/chenzhisi/article/details/39990513。必须根据DC的映射模式换算到实际DC中的像素值。

2024-06-14 17:55:16 91

转载 C++ NativeEvent使用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.youkuaiyun.com/tpriwwq/article/details/9359791。根据工程需要,对相关方法进行了封装。//提供应用层使用的回调。

2024-05-21 11:43:17 98

转载 duilib自绘制圆形进度条

watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW8zNDA0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)%"/>原文链接:https://blog.youkuaiyun.com/c_base_jin/article/details/80472937。

2024-05-21 09:43:18 161

转载 windbg :查看局部变量值

若要打开或切换到“局部变量”窗口,请在“WinDbg”窗口中的“ 视图 ”菜单上,选择“ 局部变量”。在windbg中,dx(display expression)是一个非常强大和灵活的命令,用于显示和解析复杂的数据结构和表达式。使用dx命令,可以直接在命令行中执行表达式,并以易于阅读的方式显示结果。需要注意的是,在使用dx命令之前,需要先加载符号信息,以便能够正确解析表达式和数据类型。现在我们拿到了girl变量的地址 0xe32d6ffad8,注意往下看,同时显示了girl中两个成员变量的地址偏移。

2024-05-13 20:11:45 353

转载 mciSendString函数简介(播放音乐以及录音相关操作)

如果想要提高专业性,mci指令是相对比较多的,首先要设置好声音的清晰度(位度),可接收的声音频率(赫兹),还有播放的声道(单声道或者双声道),另外还有声音的编码格式(如不同类型声音的数字信号与模拟信号的编码格式),等等……我们可以直接通过mciSendString("setaudio music volume to a",0,0,0),其中a是一个数字,来实现播放音量的改变,这个音量的换算是此时多媒体的音量乘上a/1000,所以这个a的范围是0~1000。//打开建立一个声音类型的文件项目,别名为moo。

2024-04-01 09:57:32 1283

转载 vs2019编译7zip 最新版本

由于项目需要,要用于7zip解压缩,之前是用c#直接调用7z.exe来解压缩,后来因为要解压缩文件比较大,原来7z.exe中无法通过管道捕获正在解压缩的进度。解决方法:点击菜单栏的项目------>属性------>清单工具------>输入输出------>嵌入清单------>选择否就行了。右击 E:\test\7z2103\Asm\x86\7zCrcOpt.asm 属性,下图是有问题的,但是由于工程过去久远,编译不通过,还要配置一下,它默认生成在C:\UTIL\7z.exe。应该就可以编译通过了。

2024-03-12 14:48:55 271

转载 设计模式分类说明(创建型、结构型、行为型)

行为型模式涉及到算法和对象间职责的分配,行为模式描述了对象和类的模式,以及它们之间的通信模式,行为模式刻划了在程序运行时难以跟踪的复杂的控制流可分为行为类模式和行为对象模式。在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了开发人员关注的焦点,因为如何设计对象的结构、继承和依赖关系会影响到后续程序的维护性、代码的健壮性、耦合性等。关注的是对象的创建,创建型模式将创建对象的过程进行抽象,可以理解为将创建对象进行了封装,作为客户程序只需使用对象,不再关心创建对象过程的逻辑。

2024-03-08 17:55:27 374

转载 duilib进阶教程 -- 改进List控件(3)_支持多选+右键菜单(ctrl,shift, 鼠标滑动框选)

看到很多PC客户端的列表都支持多选,比如PP助手,华为网盘,duilib本身UIList却没有此功能的支持,于是想修改一把,完善这方面的劣势,而且相信用到的这个功能的也不少,尤其在开发文件管理相关的功能模块,多选的支持应该是必须的。总结分析:ctrl按下的情况,点击,不会使前一个(一部分)选中项失去选中状态,而只是让当前点击的项改变选中状态,并将焦点移到当前项。抬起时,恢复标识位,右键抬起的话,总结分析:shift按下的情况,点击,是选中一个范围,起始项为焦点所在的项,shift点击的项为结束项。

2023-12-21 21:29:43 730

转载 libcurl表单进行文件上传

上面的post 和 last都是指向curl_httppost对象的指针, post指向的就是一个由所有section组成的链表的开端,last是该链表的尾指针。对于文件上传来说,文件大小往往会超过1024个字节,所以如果你确认你的服务器不会拒绝你的文件上传请求的话,可以禁止curl的Expect请求头,具体方法可以去看看我的另外一篇文章《libcurl的使用问题“Expect100-continue” 》。2、添加name/content/contenttype section。

2023-10-12 15:26:56 562

转载 CEF中如何进行C++代码(客户端)和JS代码(前端)互相调用

Chromium和CEF在其内部JavaScript(JS)实现中使用V8 JavaScript引擎。浏览器中的每个帧(frame)都有其自己的JS上下文(context),为该帧中执行的JS代码提供作用域和安全性。(有关更多信息,请参见“使用上下文”部分)。CEF暴露了许多JS功能,可供客户端应用程序集成使用。

2023-10-09 17:39:06 503

转载 CEF中如何进行C++代码(客户端)和JS代码(前端)互相调用

Chromium和CEF在其内部JavaScript(JS)实现中使用V8 JavaScript引擎。浏览器中的每个帧(frame)都有其自己的JS上下文(context),为该帧中执行的JS代码提供作用域和安全性。(有关更多信息,请参见“使用上下文”部分)。CEF暴露了许多JS功能,可供客户端应用程序集成使用。

2023-09-28 17:36:40 1035

转载 深入理解软件设计模式

设计模式(Design pattern) :由软件开发人员在软件开发中面临常见问题的解决方案,是经过长时间的试验积累总结出来的,它使设计更加灵活和优雅,复用性更好。从实用的角度来看,它代表了某一类问题的最佳实践。设计模式到底解决了开发过程中的哪些难题呢,它又是如何来解决的呢?其核心是:复用和解耦。使不稳定依赖于稳定、具体依赖于抽象,以此增强软件设计适应变化的能力。

2023-09-02 10:58:00 181

转载 【cef】2023最新windows编译全流程

运行完成后会出现如下报错,关闭当前cmd窗口,重新打开一个新的cmd,进入C:\my_cef\source\depot_tools 下执行 update_depot_tools.bat 即可。重新打开一个新的,切换到C:\my_cef\source\chromium\src\cef\tools 下执行 make_distrib.bat --ninja-build 命令即可。打包完成后在C:\my_cef\source\chromium\src\cef\binary_distrib 下有我们想要的东西。

2023-08-24 09:45:33 160

转载 winapi 锁定程序到任务栏 c++

const WCHAR kPinStrCh[] = L"锁定到任务栏";

2023-08-23 19:41:53 293

转载 CEF:C++和JS交互

C++和JS交互V8原理:https://github.com/fanfeilong/cefutil/blob/master/doc/content_register_v8_extension.md。" MyMath.add = function(num1, num2) {"//定义一个MyMath的add函数,参数顺序为外部js调用顺序。//获取全局函数js_handler_call_back,并且执行js_handler_call_back。"//native 函数,不带参数。

2023-08-22 18:09:38 246

转载 允许CEF跨域访问iframe

虽然此时,在线页面嵌入成功并显示出来了,但是,无法happy的实现父子页面的跨域访问,父页面想要调子页面的JavaScript方法,没门,子页面调父页面,没门,限制重重。根据异常消息,子页面访问的父页面的URL必须为http协议,而非file协议。既然我们用CEF,那么跟Chrome也是一般无二了,只要找到类似的设置就可以。重新启动程序,显示iframe中的在线页面,为输出原来的异常消息。来显示一个在线页面,加载的过程中会触发一个未捕获异常,默认情况下,如果嵌入本地Web页面,并在页面内部使用。

2023-08-22 18:07:57 623

转载 cef -- 参数配置详细

它可以用于执行一个可执行程序来启动一个子进程,该可执行程序可以是当前的浏览器客户端可执行程序(默认行为)或是通过设置CefSettings.browser_subprocess_path指定路径的可执行程序。如果被调用时识别为子进程,该函数将会阻塞直到子进程退出并且返回子进程退出的返回码。这通常与宿主应用程序的进程相同,大多数应用程序的逻辑将在浏览器进程中运行。//调用windows Api进入模态消息环之前设置为true,退出模态消息环的时候设置为false,例如TrackPopupMenu。

2023-08-02 16:48:16 2309

转载 Chromium的多进程模式

Process-per-site:同域名范畴的网站放在一个进程,比如www.google.com和www.google.com/bookmarks就属于一个域名内(google有自己的判定机制),不论有没有互相打开的关系,都算作是一个进程中。Process-per-tab:这个简单,一个tab一个process,不论各个tab的站点有无联系,就和宣传的那样。Single Process:这个很熟悉了吧,传统浏览器的模式,没有多进程只有多线程,用--single-process开启。

2023-07-25 12:03:15 363

转载 CEF中使用代理的方法

OnBeforeCommandLineProcessing回调中包含CefCommandLine命令行控制实例,调用CefCommandLine实例的AppendSwitchWithValue方法设置相关属性开关,如设置代理command_line->AppendSwitchWithValue("--proxy-server", "192.168.1.100:8000");在集成cef3时,遇到一个设置代理的问题,cef3提供了两个设置代理的方式。

2023-07-10 16:39:18 1249 1

转载 大话领域驱动设计中的贫血模型和充血模型

所以这篇文章只探讨领域模型的模式问题。贫血模型是在失血模型的基础上聚合了对应领域范畴的业务领域行为,不仅仅是简单的setter/getter,但在行为过程中对领域对象的状态发生的变化只停留在内存层面,不关心其数据的持久化,即不依赖Repository/DAO,把数据持久化放在service中按需处理。在可复用的角度来看贫血模型和充血模型,更纯粹的贫血模型无疑是可复用性更高的,如果我想复用领域模型中的某个修改状态的方法,只是想获取变更后的状态,并不想将它持久化,那么对于充血模型的这个方法就不能复用了。

2022-10-14 18:01:17 271

转载 libcurl异步方式使用总结

1、在curl_multi_add_handle之后,multi_timer_cb会马上被拉起调用,然后第一次调用的话timeout是0ms,所以timer_cb也会被拉起,然后调用curl_multi_socket_action。7、当响应到来的时候,socket描述符可读,调用socket_cb,从而调用curl_multi_socket_action,该函数就就会异步调用之前设置的、负责读入数据的write_cb,从而读入数据。// 当描述符可读和可写时,调用socket_cb。

2022-10-08 20:45:48 1477

空空如也

空空如也

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

TA关注的人

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