自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 pugixml C++ 开发者处理 XML 数据的理想选择之一

pugixml 以其高效、易用、全面的功能和良好的跨平台能力成为 C++ 开发者处理 XML 数据的理想选择之一。

2024-04-12 17:45:23 309

原创 C++ 检测文本文件编码格式

3.检查ANSI = 0,Unicode= 1,UTF8,3.检查是否是UTF8格式。

2024-04-12 17:37:53 262

原创 C++ linked_hash_map按顺序保存的容器

HashMap中不存在保存顺序的机制。而在LinkedHashMap中可以保持两种顺序,分别是插入顺序和访问顺序,这个是可以在LinkedHashMap的初始化方法中进行指定的。相对于访问顺序,按照插入顺序进行编排被使用到的场景更多一些,所以默认是按照插入顺序进行编排。链接:(没心情看原理,直接使用)

2024-04-10 17:18:57 336

原创 Qt 多线程QThread的四种形式

重点:1.互斥量:QMutex配套使用,lock(),unlock(),如果一个线程准备读取另一个线程数据时候采用tryLock()去锁定互斥量,保证数据完整性。QMutexLocker简化版的QMutex,在范围区域内使用。2.读写锁:QReadWriteLock配套使用,lockForWrite(),lockForRead(),它允许多个线程以只读方式同步访问资源,但只要有一个线程以写入方式访问资源,其他线程就必须等待,直到写操作完成。

2024-03-28 23:02:52 575

原创 Qt 三维可视化模块Data Visualization理解

2.QWindow分别为三维柱状图,三维散点图,三维曲面。QAbstract3DSeries去存储QWindow的数据信息,通过QBarDataProxy去增删改查数据。1.Data Visualization三维图形不能在一般的QWidget组件上显示,需要通过QWidget作为承载容器使用。

2024-03-24 20:42:37 168

原创 MFC 自定义分发消息方法

2.在你需要发送和接收该消息的类中,首先注册这个自定义消息。一般在窗口类(如CWnd派生类)的OnInitDialog、OnCreate或其他初始化函数中进行。#define WM_MY_CUSTOM_MESSAGE (WM_USER + 101) // 自定义消息ID。1.创建一个专门自定义消息的头文件 constValue.h。3. 实现自定义消息处理器函数。当消息触发时,此函数会被调用。4. 发送自定义消息。你可以在程序的任何地方通过。函数向拥有该消息处理器的对象发送消息。

2024-03-20 19:59:26 413

原创 分辨率相关知识点

2K: 2560x1440 (720p的两倍) 2K的定义是一般认为只要水平方向上的像素接近2000就可以被称作2K分辨率。3.通常指的分辨率一般采用的是消费电子领域和电视广播行业采用的UHD(Ultra High Definition)标准。1.高清电视系统采用的标准分辨率之一,其宽高比同样为16:9(1.77:1)。4k(超高清):3840x2160 (1080p的两倍)1080P(全高清):1920x1080。720P(高清) : 1280x720。

2024-03-20 10:32:30 192

原创 QtCreate cmake 和qmake 使用调用动态库流程

3.cmakelist.txt中的文件路径并未变化。2.只是在include下放置所需的dll。1.流程和静态库一样。

2024-03-17 16:14:51 229

原创 QtCreate cmake 和qmake 使用调用静态库流程

1.无论是qmake还是cmake生成的lib,都可以直接给另一个cmake和qmake使用。重点注意debug生成的对应debug,releaase生成的对应release。2.cmake和qmake区别在于qmake有添加库,cmake没有添加库这个功能,只能手动添加。3.cmake添加库,需要在CmakeLists.txt中添加信息。

2024-03-17 15:51:33 218

原创 动态库和静态库的新理解

1.静态库中包含的是全部的源码信息,而动态库dll里面包含的是所需要的部分源码信息。2.静态库是将被调用的函数和数据复制一份到所使用的模块,而动态库只需要实现一次就行。比如两个模块使用了静态库里面的函数,这两个模块都需要复制两份内容到使用的模块内。2.一个项目要引用另一个项目可以直接使用lib库,并不需要导出,但需要类的头文件。导出要调用的类和函数,然后在要使用的项目附加依赖性,再附加上那些类和函数的头文件位置。静态库和导入库是两个概念,一个是传统意义上的静态库,另一个是配合dll使用的导入库。

2024-03-16 15:10:44 368

原创 MinGW的作用

同理用mingw开发的程序移植到Linux上,对于大型项目,可能需要对源代码进行调整,去除对Windows API的依赖,并添加对Linux API的支持,然后通过交叉编译工具链(如 mingw-w64-for-linux-x86_64-gcc)在Linux系统上编译出Linux版本的程序。项目是为了在Linux系统上编译生成能够在Windows系统上运行的二进制文件而设计的,它提供了一套交叉编译工具,允许开发者在Linux环境下编译适用于Windows平台的应用程序。Linux下开发的版本可以通过。

2024-03-13 10:50:55 387

原创 Qt Q_PROPERTY理解

2.Q_PROPERTY 提供了一种方便的方式来定义和使用 Qt 对象的属性,使得属性在运行时可以更容易地被外部代码查询和修改。3.主要就是给外部可以直接调用,外部可以不过A.property(...)方法直接调用类的函数。1.很多文章写的乱七八糟的,简单易懂的用很多术语解释让人看的头疼。4.这篇文章非常清晰。

2024-03-10 20:15:02 157

原创 Qt QImage和QPixmap区别

2.QImage可以读取BMP、JPG、PNG 等格式的图片件,存储图像中所有像素的颜色数据。QImage的接口函数可以实现图像的缩放、旋转、镜翻转等简单处理,可以转换颜色数据格式。因为QImage可以读写图像中每个像素的颜色数掘所以结合图像处理算法,我们可以对图像进行各种处理,例如调整亮度、调整对比度、模糊处理等。1.QPixmap主要用于在界面上显示图像,它可以对图像进行缩放,可以加载BMP、JPG、PNG等格式的图片文件,然后在 OLabel组件上显示图像。

2024-03-10 19:59:43 372

原创 Qt 绘制中的视口(setViewport)和窗口(setWindow)

2.先根据绘图设备的物理坐标系的矩形位置,设置视图视口setViewport,然后在以视口为区域去设置窗口的左上角位置和长宽矩形区域,视口的左上角为0,0点,窗口根据计算将视口的左上角作为窗口坐标系左上角的位置。1.绘制(QPainter)可以设置视口,视口下设置窗口,而绘制的构件是以窗口为坐标系进行绘画。

2024-03-07 21:25:46 430

原创 Qt QPainter的使用方法

2.QPainter通常涉及到设置画笔、设置画刷、绘图(QPen、QBrush、drawxx)三个流程。1.QPainter在QWidget窗口的paintEvent中使用。

2024-03-06 21:28:37 369

原创 Qt QSqlRelationalTableModel关系数据表模型的使用

以studInfo作为QTableView的模型,其中departID和majorId存储的是编码,因为使用QSqlRelationalTableModel模型,就可以将dedpartments表中对应departID编码的名称和majors表中对应的majorId编码的名称显示出来。QSqlRelationalTableModel可以关联多个数据表。利用setRelation的方法,关联两个对应的表格。

2024-03-05 23:27:09 429

原创 Qt QSqlQuery的使用方法

1.QSqlQuery可以进行sql语句的增删改查操作。不传递参数,表示使用默认的数据库进行链接。2.QSqlQuery由以下的构造函数。sql的bingValue方式有两种。通过输入Id,获取特定的sql数据。

2024-03-05 21:43:50 325

原创 程序项目打包发布方法,采用InstallShield软件

2.项目创建在D盘,三方库是BCG,放E盘下,需要的头文件放include,lib文件对应Debug和Release。将快捷名称通过 Installation Designer设计器进行将名称改成简单的,它们提示这样的名称是错误的。这边主要将几个打包出现的问题。我安装的是2021版本,选择中文发布,结果出来的版本还是英文。1.使用chatgpt生成一个配置环境的文件,创建一个环境变量,项目中使用。步骤一:创建一个依赖三方库+配置环境的bat文件的项目。3.平台发布的问题,这是本身项目中自带的平台编译问题。

2024-03-02 16:28:06 413

原创 Qt SQLite的创建和使用

3.QTableView和QSqltableModedl、QItemSelectionModel关系。1.SQLite创建数据库内容方法。2.和数据库进行链接方法。

2024-02-28 20:58:14 459

原创 Qt 使用windows注册表保存设置

表示setting指向注册表目录HKEY_CURRENT_USER/Software/WWB-Qt/samp7_5。1.在构造函数中初始化,确认注册表中的一个目录。只要使用下面语句定义变量setting。

2024-02-25 21:14:14 401

原创 Qt 使用MD5给数据加密方法

1.通常在存储密码的时候需要对数据进行加密,通常采用Md5进行加密。

2024-02-25 14:38:39 612

原创 Qt 文本框QplainTextEdit读取文本文件内容并显示方法

【代码】Qt 文本框QplainTextEdit读取文本文件内容并显示方法。

2024-02-24 21:34:44 608

原创 Qt MDI应用方法:QMdiArea和QMdiSubWindows类

1.使用MDI应用程序,需要在主窗口的工作区放置一个QMdiArea组件。2.MDI有两个显示模式:Tab多页显示模式和子窗口显示模式。子窗口显示模式有两种显示方法:窗口级联展开和平铺展开。并将QMdiArea组件设置成中心窗口。

2024-02-24 21:26:51 170

原创 Qt 工具条的ToolBar创建方法

链接:Qt creator中操作QAction加入QToolBar_qt qaction-CSDN博客

2024-02-23 17:31:20 202

原创 断点调试野指针判断方法

1.当出现指针变量无法读取内存时候,则表示当前指针对象早就被析构,现在的指针即是一个野指针。

2024-01-24 12:38:08 384

原创 C++11 委派构造用法

(1)如果继承它的子类构造不需要参数,则它直接继承基类的构造,节省代码空间。(2)如果没有代码使用基类的构造函数,它不就会产生多余的代码。如果继承的基类的构造函数有自身的参数,这就不太适用。1.委派构造优势在于。

2023-12-20 11:52:34 381

原创 模板调用类中函数方法

【代码】模板调用类中函数方法。

2023-12-14 20:31:52 111

原创 类做结构体的利与弊

在C++中,类和结构体都可以用来定义自定义数据类型,它们的基本语法非常相似。实际上,在C++中,主要的区别在于默认的成员访问权限(在类中默认为私有,而在结构体中默认为公共)。因此,你可以使用类来模拟结构体,反之亦然。然而,使用类或结构体取决于你的设计需求和风格偏好。

2023-11-14 11:20:07 178

原创 function函数指针和lamada的[&]和[=]注意事项

lamda传入引用&,导致作用域消失,最终报错。1.function对象存储函数指针。2.lamada表达式&和=捕捉的方式。在工作的过程中,lamda表达式的。lamda传入赋值=,正确反馈。

2023-10-30 20:31:48 120

原创 C++ 委托妙用

1.利用观察者,注册需要处理的用户(Test)(右值处理方法也是妙处)2.用户自身采用模板去调用观察者的类(方法甚妙)

2023-10-27 10:44:57 108

原创 C++17递归锁recursive_mutex

2.递归锁允许同一线程在已经获得锁的情况下再次获得锁,这对于递归函数或嵌套函数非常有用。不过,要小心使用递归锁,以避免死锁和性能问题。通常,只有在确实需要在递归调用中再次获得锁时才使用递归锁。来创建递归锁(recursive lock),它是C++标准库提供的一种多线程同步机制。递归锁允许同一线程多次获得锁,而不会造成死锁。

2023-10-20 16:44:28 256

原创 static设置变量的使用方法

1.长时间不使用static会忘记,记录一下,static变量的设置使用。

2023-10-20 15:39:46 132

原创 判断多个多边形是否连通(方法一:原理)

1.将多边形一个一个拎出来判断,以1为开始,后续如果连接,就加入序列,以2开始判断,以此为序。

2023-10-13 16:39:27 111

原创 变量承接函数类型的方法

采用函数模板:类具有相同的函数。1.当两个类没有共同基类。2.当两个类有共同基类。

2023-10-10 11:52:30 50

原创 管理器注册类方法和调用类函数方法

一:定义结构体和基类。

2023-10-09 23:49:35 219

原创 va_list 、va_start、va_arg 和 va_end的含义和用法

这些宏提供了一种在函数中处理可变数量参数的方式,通常用于实现变参函数(variadic functions)。是一个类型,通常是一个指向可变参数列表的指针。你可以使用它来访问可变参数的内容。是C/C++中用于处理可变参数的一种机制,通常与相关的宏一起使用,如。宏用于结束对可变参数的访问,并且通常放在函数的最后。宏用于从可变参数列表中获取参数的值。和相关宏来接受可变数量的整数参数,然后计算它们的总和。对象,第二个是要获取的参数的类型。对象,第二个是最后一个非可变参数。,你可以逐个获取可变参数的值。

2023-10-09 15:34:38 467

原创 __VA_ARGS__的作用和用法

是C/C++中的一个宏,用于在宏定义中表示可变数量的参数(variadic arguments)。它通常与宏函数(函数式宏)一起使用,以便可以在宏中处理不定数量的参数。是一个强大的特性,它允许你创建具有可变数量参数的宏,以实现各种不同的功能,如条件性地打印日志、生成代码等。但要小心使用,确保不会导致宏展开时的意外行为。表示所有传递给宏的参数,可以是零个或多个参数。来接受可变数量的参数,并将它们打印到标准输出流。和宏定义的...(参数列表)配套使用。

2023-10-09 15:16:48 1625

原创 MFC界面控件添加函数小技巧

选择需要响应的消息方式。代码会自动创建响应函数。1..选中控件的属性,点击闪电形状。2.在右侧的点击方式选中生成函数。

2023-10-07 10:22:45 134

原创 命令空间定义的流程和使用方法

1.命名空间对于项目很庞大的时候,起到很重要的作用,它可以明确表示目前正在使用的函数和类所属的定义,不会发生歧义。2.尽量使用命名空间,保证代码的规范性。

2023-10-07 10:18:15 63

原创 MVVM模式理解

2.利用一个中间商进行数据的处理,所有的数据通过中间商进行处理。1.将展示的界面窗口和创建的构件是数据进行分离。

2023-09-20 11:50:24 67

MFC的resource资源重排和整理解决方法

MFC的resource资源重排和整理解决方法

2023-08-04

空空如也

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

TA关注的人

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