程序员乐逍遥
15年C/C++开发经验资深程序员、想跟我学编程的可以观看我精心录制的视频课程!
展开
-
QTableWidget 中为 每一行添加 右键菜单
是 Qt 中的一个方法,用于设置一个 QWidget 子类(如 QPushButton, QLabel, QTableWidget 等)的上下文菜单策略。这个方法决定了上下文菜单(context menu)是如何被触发的,以及是否允许用户自定义菜单。信号,其中包含鼠标点击位置的信息。你可以在信号的槽函数中使用这个位置信息来显示你自己的上下文菜单。或任何其他 QWidget 子类将不会自动显示菜单。策略时,你必须自己处理上下文菜单的显示。原创 2024-07-15 15:45:55 · 19 阅读 · 0 评论 -
C++ STL中的std::remove_if 的用法详解
是C++ STL中头文件的一部分,它用于从容器中移除所有满足给定谓词(即判断条件)的元素。值得注意的是,并不会直接删除元素,而是将不满足条件的元素移到容器的前面,返回一个新的迭代器指向第一个应被删除的元素。因此,为了完全删除这些元素,我们需要配合容器的erase成员函数使用。假设我们有一个Student类,包含姓名、年龄和成绩等属性,我们的目标是从一个中移除所有成绩低于60分的学生。首先,定义Studentpublic:int score;// 用于输出学生信息int main()原创 2024-07-15 15:38:19 · 131 阅读 · 0 评论 -
QButtonGroup 类的妙用 -按钮组的管理与控制
无论是单选按钮(`QRadioButton`)还是复选框(`QCheckBox`),`QButtonGroup`都能帮助我们轻松地控制和监听这些按钮的状态变化。`QButtonGroup`主要用于将多个`QRadioButton`或`QCheckBox`组合在一起,形成一个逻辑上的组。`QButtonGroup`提供了多种信号,如`buttonClicked(int)`, `buttonPressed(int)`, 和`buttonReleased(int)`,这些信号可以用来响应按钮的各种状态变化。原创 2024-07-06 14:22:43 · 50 阅读 · 0 评论 -
使用 iconfont.ttf文件保存多个图标文件,并且像文字一样使用代码绘制出来
这里的多个图标其实是存储在 iconfont.ttf文件中。这个文件里面的图标对应的编码。原创 2024-07-04 21:49:22 · 76 阅读 · 0 评论 -
交叉编译中的 --build、 --host和 --target
在交叉编译中比较常见的一些参数就是build、host和target了,正确的理解这三者的含义对于交叉编译是非常重要的,下面就此进行解释。表示针对 64 位 x86 架构(也称为 AMD64 或 x86_64)的个人电脑上的 GNU/Linux 系统。./configure --build=编译平台 --host=运行平台 --target=目标平台。:表示针对小端字节序的 MIPS 架构的 GNU/Linux 系统。:表示针对 PowerPC 架构的 GNU/Linux 系统。原创 2024-06-30 11:10:38 · 59 阅读 · 0 评论 -
在Ubuntu 18.04.6 LTS 交叉编译生成Windows 11下的gdb 8.1.1
最后在 build/gdb目录下找到你需要的gdb.exe。最后,放到windows 11 下试试效果。2. 下载 gdb 8.1.1源码。产生Makefile文件。1. 安装mingw。原创 2024-06-29 22:39:16 · 232 阅读 · 0 评论 -
高性能STL库 EASTL 、高性能JSON库
兄弟们,对STL要求性能高的可以试试这个EASTL库!原创 2024-06-24 22:41:20 · 96 阅读 · 0 评论 -
Qt C++中使用QFutureWatcher 等待多个异步任务 执行完成
在Qt开发中,处理耗时任务而不会阻塞主线程(通常负责图形用户界面的更新)是非常重要的。Qt提供了多种机制来实现这一点,其中结合是处理并等待多个异步任务完成的一种强大方法。下面我们将详细解析一段代码,该代码演示了如何使用来确保在所有耗时任务完成后再继续主线程的执行流程。原创 2024-06-21 13:30:53 · 118 阅读 · 0 评论 -
Qt 创建左侧图标和右侧文字的显示的几种方法
简介:当标准的Qt组件不能满足特定的布局需求时,我们可以创建一个自定义的QWidget子类来实现更复杂的布局效果。实现步骤创建自定义类首先,定义一个新的QWidget子类,比如。初始化UI组件在构造函数中,添加图标标签和文本标签,并设置其样式和布局。3{6// 图标大小1011 textLabel->setText("自定义组件");12// 文本与图标垂直居中对齐17}使用自定义组件。原创 2024-06-21 13:20:56 · 181 阅读 · 0 评论 -
VS2022 使用CMake 设置调试
其中 "name": "haha" 为 调试名,指定运行时,dll的搜索目录!原创 2024-06-16 21:31:21 · 96 阅读 · 0 评论 -
VS2022 使用C++访问 mariadb 数据库
【代码】VS2022 使用C++访问 mariadb 数据库。原创 2024-06-12 14:22:48 · 199 阅读 · 0 评论 -
VS2022使用C语言代码访问MariaDB数据库
第三步,配置VS2022。原创 2024-06-12 09:27:17 · 169 阅读 · 0 评论 -
MySQL Connector/C++ 和 MySQL Connector/ODBC 的区别
选择使用哪一个取决于你的具体需求,如果你正在使用C++并且希望获得更好的性能和C++友好的接口,MySQL Connector/C++可能是更好的选择。- MySQL Connector/C++ 提供了面向对象的编程接口,它是用C++编写的,提供了C++特有的类和对象来与MySQL数据库进行交互。- MySQL Connector/ODBC作为基于标准的产品,也有良好的社区支持,但由于它是跨语言的,可能在特定语言环境下的资源不如Connector/C++丰富。原创 2024-06-12 09:18:56 · 204 阅读 · 0 评论 -
软件架构x86 、 x86_64、 arm64、aarch64 、PowerPC架构、MIPS架构、RISC-V架构
RISC是一种执行较少类型计算机指令的微处理器,它能够以更快的速度执行操作,使计算机的结构更加简单合理地提高运行速度,相对于X86 CPU架构具有更加均衡的性能功耗比。,CISC指令集的每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。i386指的是Intel 386处理器的型号,它是Intel x86架构的一部分,而x86是一种广泛使用的处理器架构,用于PC和服务器等设备。(IA-64):由Intel和HP合作开发的处理器架构,用于高性能计算。原创 2024-06-08 16:41:43 · 87 阅读 · 0 评论 -
make 中 DESTDIR 和 --prefix 的区别
这两个示例分别展示了如何使用两种流行的构建系统( + 和 + )来编译和安装软件,并解释了 和 这两个选项的作用。这个命令运行 脚本,它是 生成的,用于检测系统环境并创建适当的 。这里: 指定了软件安装的基本目录。这意味着软件的可执行文件、库文件、头文件等将安装到 目录下及其子目录中。如果不指定 ,则默认安装到 。这个命令使用 工具来编译软件。 是一个选项,表示 可以同时运行8个作业(jobs),这样可以加快编译过程,利用多核处理器的优势。这个命令执行 目标,根据 将编译好的软件安装到原创 2024-06-05 21:51:51 · 103 阅读 · 0 评论 -
GNU Linux 下安装目录的规范
官方链接。原创 2024-06-05 21:27:27 · 133 阅读 · 0 评论 -
Windows Linux下查看静态库,动态库各种命令的总结
【代码】Windows Linux下查看静态库,动态库各种命令的总结。原创 2024-06-05 17:24:17 · 117 阅读 · 0 评论 -
检查用户是否在错误的目录中运行了CMake命令
但是有一些不熟悉CMake的依然会直接在当前目录配置,比如 CMake .那么我们如何在CMakeLists.txt 进行检测,避免这种行为呢?这样可以避免 生成的一些文件污染 代码目录。原创 2024-06-05 15:10:12 · 33 阅读 · 0 评论 -
Qt 5.14.2 报错 qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed
OpenSSL是一个开源的软件库,用于实现安全套接字层(SSL)和传输层安全性(TLS)协议,以及用于加密和解密数据的一般加密功能。:这个DLL提供了OpenSSL的加密库,它包含了各种加密算法和哈希函数,例如AES、RSA、SHA-1等。:这个DLL文件包含了OpenSSL的加密库,提供了各种加密和哈希算法,如RSA、DSA、AES、SHA等。在现代的应用程序中,如果你需要使用OpenSSL的功能,应该确保使用的是最新版本的DLL文件,以获得更好的安全性和兼容性。将这两个dll拷贝到对应的。原创 2024-06-03 20:09:55 · 28 阅读 · 0 评论 -
VS2002 ~ VS2022平台工具集对应关系
MSC_VER。原创 2024-05-28 09:45:10 · 82 阅读 · 0 评论 -
解决Windows终端PowerShell展示乱码的问题
标题:解决Windows终端PowerShell展示乱码的问题在使用Windows终端中的PowerShell时,有时会遇到乱码显示的问题,这可能会给用户带来困扰。这种问题通常与字符编码设置有关,因为不同的字符编码会导致终端无法正确显示特定语言或特殊字符。在本文中,我们将介绍如何解决Windows终端PowerShell中乱码显示的问题,并详细说明各种字符编码的数字表示,以及相关命令的用法。原创 2024-05-23 15:26:27 · 618 阅读 · 0 评论 -
Qt5 创建带时间轴的 曲线(VS2019 + Qt 5)
最近,客户需要做一个 以时间为横轴,速度和位置(可以分开显示最好)为纵轴的图像曲线,电机只要运动就有图像,无需硬件对接 的Qt 图表,先上效果图!最后,大功告成,完工!原创 2024-05-20 20:48:52 · 72 阅读 · 0 评论 -
vcvarsall.bat 脚本究竟有什么用?
是一个脚本文件,用于设置 Visual Studio 编译器和工具的环境变量。这个脚本是 Visual Studio 安装的一部分,它允许开发者在命令行中使用 Visual Studio 的编译器和其他工具。下面我将详细介绍 的用途、工作原理以及如何使用它。 是一个批处理文件,它被设计用来初始化 Visual Studio 开发环境。当你在命令行中编译 C 或 C++ 程序时,你需要确保编译器和其他相关工具的路径被正确设置,这样编译器才能找到必要的库和头文件。 就是用来自动完成这个任务的。当你运行 ,它会原创 2024-05-20 20:47:55 · 51 阅读 · 0 评论 -
Windows平台下C++动态库的__declspec(dllexport)和__declspec(dllimport)的作用
和是Windows平台下用来导出和导入函数、变量和类的关键字。它们的正确使用可以确保动态链接库的正确运行,并且可以避免因为符号未导出或导入不正确而引起的链接错误。在编写动态链接库时,我们需要使用将需要导出的符号标记出来;在使用动态链接库的程序中,我们需要使用来声明从外部DLL文件中导入的符号。这样可以确保动态链接库的正确使用,提高代码的可移植性和可维护性。原创 2024-05-10 11:10:51 · 270 阅读 · 0 评论 -
Qt框架中 MOC 与 Q_OBJECT 宏
MOC 的主要作用是扩展了 C++ 语言的功能,使得 Qt 能够提供更多的高级特性,如信号槽机制、属性系统等。在 Qt 中,元对象系统是一种运行时的反射机制,用于提供 Qt 对象的元信息,包括类名、父类名、属性、方法、信号和槽等。宏的头文件,并生成额外的代码,以支持 Qt 的元对象系统和其他高级特性。宏的头文件时,它会解析这个头文件,并根据其中的类声明和信号槽声明生成相应的 C++ 代码。等)的头文件,并生成额外的 C++ 代码,以支持 Qt 的元对象系统。宏的头文件进行处理,从而生成相应的元对象代码。原创 2024-05-09 19:45:19 · 52 阅读 · 0 评论 -
探索STLport:C++标准模板库的开源实现
STLport是一个强大而灵活的C++标准模板库的实现,它为开发者提供了跨平台、高性能的STL解决方案。无论是在学术研究、商业应用还是个人项目中,STLport都是一个值得关注和探索的工具。如果您还没有尝试过STLport,不妨给它一个机会,您可能会被它的功能和性能所惊艳。原创 2024-05-08 23:01:20 · 160 阅读 · 0 评论 -
Ubuntu 18.04.6 LTS Qt5.14 下无法输入中文的解决方法
接下来,我们把 sogoupinyin 的这个so 拷贝到 Qt 的platforminputcontexts 目录下即可,首先,我们是Linux中可以输入搜狗输入法,但是在Qt中无法输入中文。然后重新启动Qt ,我们发现可以正常输入中文了!在Linux下安装输入法的具体步骤见我的博客。我的Qt目录安装对应的是 /home/hq/先查找一下相关的so文件。原创 2024-04-25 17:12:28 · 105 阅读 · 0 评论 -
VS2019 VS2022 LNK2019 无法解析的外部符号sprintf
它的作用是解决在使用新版本的 Visual Studio 编译旧版本的 C/C++ 代码时可能出现的一些兼容性问题。在早期版本的 Visual Studio 中,这些函数的实现方式可能与当前版本的 Visual Studio 有所不同,导致在链接时出现一些问题,比如链接错误或者运行时错误。就提供了一种兼容性解决方案,通过提供一组 legacy(遗留)的标准 I/O 函数定义,使得旧版本的代码能够在新版本的 Visual Studio 中正常编译和链接。主要解决的是与输入输出函数(如。原创 2024-04-11 19:54:29 · 169 阅读 · 0 评论 -
C++ 11 ~ C++21标准发展及其新特性概览
C++11是C++历史上最重要的更新之一,它引入了许多现代编程的特性,极大地改善了语言的表现力和性能。原创 2024-04-10 20:47:43 · 174 阅读 · 0 评论 -
GNU Autotools 套件详解
aclocal` 是一个用于生成 `aclocal.m4` 文件的工具,这个文件包含了一系列的宏定义,这些宏用于在 `configure.ac` 或 `configure.in` 文件中调用。GNU Autotools 是一套用于构建和安装软件的工具,它包括了一系列的工具,如 `autoscan`, `aclocal`, `autoconf`, `autoheader`, `automake` 等。5. **生成 `config.h.in`**:运行 `autoheader` 来生成配置头文件模板。原创 2024-04-10 20:20:38 · 205 阅读 · 0 评论 -
make、ninja、nmake、jom 、qmake、cmake 、GN 都是什么?
CMake 可以生成各种不同的构建系统所需的文件,包括 Makefile、Ninja、Visual Studio 项目文件等,从而使得项目可以在不同的环境下构建和运行。QMake 专注于 Qt 项目的构建,CMake 则是一种通用的跨平台构建工具,而 GN 则是针对特定项目的高效构建工具。NMake是微软Microsoft提供的一个构建工具,它是Make的Windows版本 ,用于 Windows 环境下的项目构建。Make是一个经典的构建工具,它通过读取名为Makefile的文件来管理程序的编译过程。原创 2024-04-10 10:55:02 · 195 阅读 · 0 评论 -
二、VS2019编译的VTK9.0.0 + Qt 5.14.2 环境测试
Ui文件中添加一个QWidgte 控件,并且提升为 QVTKOpenGLNativeWidget 类。1.你的Vtk9.0.0 使用CMake VS2019 编译时,需要启用Qt。构建设置选择 MSVC2017 64bit。原创 2024-01-19 14:28:10 · 410 阅读 · 0 评论 -
VS2019 使用CMake项目配置 运行时dll 路径
要使用以下语法添加的其他环境变量:这里配置了环境变量PATH ,指定运行时dll的路径。当我们使用VS2019创建普通sln项目时,指定dll 的目录有以下三种方法!:指定在生成项目时要调用的 CMake 目标(即你前面生成的。那么如果你创建的是CMake项目时,应该怎么设置呢?:传递给要调试的程序的命令行自变量。原创 2024-01-18 11:09:13 · 683 阅读 · 0 评论 -
彻底弄懂MySQL事务隔离级别
并发事务中存在以下 3 个问题。原创 2024-01-05 11:19:53 · 370 阅读 · 0 评论 -
解决error C2065: “_lpw”: 未声明的标识符
遇到上面的错误,查阅资料,解决方法如下:原创 2023-12-18 09:15:42 · 378 阅读 · 0 评论 -
_variant_t 中的 SAFEARRAY的SafeArrayGetElement获取不到值的情况
初始化 VARIANTARG (或 VARIANT) 类型的新局部变量。最近,使用SAFEARRAY 获取二维数组的值,发生了一个很诡异的情况!它需要初始化这样的一个变量。不然你去获取就是各种值不对,真坑啊!字段设置为 VT_EMPTY 来初始化 VARIANTARG。但是如果你是一个BSTR的数组,这里字符串就不行了,获取的是乱码!不同,此函数不解释 VARIANTARG 的当前内容。这里获取 long 、double 是没有问题的。这个时候才发现没问题了!大家这里注意到没有,原创 2023-11-16 15:28:02 · 174 阅读 · 0 评论 -
VS2013+QT5.5 中文乱码问题 解决方案
在最后一行调用QString::replace(const QString &, const QString &)函数的时候也发生了相同的操作,一个新的QStringData获取了保存 "%FileName%"的空间。在对s etObjectName的调用中,我们避免了从UTF-8的编码转换,但是我们仍然需要进行一次从QLatin1String到QString的(隐性)转换, 所以不得不堆中分配QStringData的空间。(比如我们的类内出现两处"close",一处含义是关闭,另一处含义是亲密的。原创 2023-07-10 21:46:36 · 461 阅读 · 0 评论 -
Qt 各种版本下载链接地址详解
在线安装程序可以根据你所选的参数自动下载相应的文件,而Qt Creator是一个功能强大的IDE,可以为Qt开发人员提供高效的开发体验,并且可以轻松创建和管理Qt项目。official_releases/:这个目录包含了Qt的主要版本,每个版本的文件都按照操作系统和编译器类型进行了分类。它包含了Qt 6的所有版本,每个版本的文件都按照操作系统和编译器类型进行了分类。这些文件通常按日期进行命名。archive/:这个目录包含了Qt历史上所有的版本(从Qt 0.90到最新版本),以及早期的补丁和修复程序。原创 2023-03-30 11:43:10 · 2856 阅读 · 0 评论 -
Qt Creator构建提示:无法打开包含文件“stddef.h“ “concrt.h“
Qt Creator构建提示:无法打开包含文件“stddef.h“ “concrt.h“原创 2023-03-23 20:21:37 · 698 阅读 · 0 评论 -
使用MFC C++ 的ADO技术访问Access数据库详解
首先第一步:在stdafx.h头文件中添加如下代码,msado15.dll 主要用于对数据库进行操作的库, #import其最终作用同我们已经十分熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。下面接着需要初始化环境 ,在MFC中可以用AfxOleInit()或CoInitialize(NULL),非MFC使用CoInitialize(NULL)。下面开始连接access数据库,一般都是.mdb文件或者 .accdb 文件。原创 2023-02-24 13:55:09 · 896 阅读 · 0 评论