自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UML图中如何画出直接调用类A的成员变量类B的对象指针

这里不需要在消息箭头线上写函数名,空着就行,表示调用的就是类对象本身。然后使用函数调用的消息箭头线画出调用关系,首先画出类A和类B的对象实例和生命周期线。

2024-04-24 12:22:14 73

原创 UML时序图中,如何画出一个类的函数中调用了该类的另一个函数,嵌套调用函数

2. 在合适的位置上,不挤到一起就行,用水平的消息箭头表示函数调用。箭头从调用方对象的方框指向被调用方对象的方框。3. 对于函数内部调用的情况,可以在相应的消息箭头方框上,再画一个激活方框,来表示类内部函数的调用。| | |----消息3---->|| |----嵌套消息2---->|| |<---返回值-------||<---返回值---------|对象A 对象B。|----消息1-->|1. 绘制对象激活条,短矩形。

2024-04-24 12:12:14 196

原创 电脑重启后word文档空白或打不开,word无法自动修复,如何拯救

右键点击文档,选择属性,当你的电脑系统无故重启后,这里会有一个还原点,相对于整个文档被毁灭,这里的近期文档还原无疑是拯救了我们大半条命了!第二,如果上述地方没有还原点,那么直接复制上述的word备份,打开后另存为文档格式,你的努力仍然可以拯救。最近编辑word文档,写了好几个星期的内容随着电脑重启的一瞬间,灰飞烟灭,让我简直痛不欲生!其他方式,如果你的word默认未保存文档目录底下有一份备份,那就复制备份即可。第一,普通的文档word自动修复不好使的时候,好在,天无绝人之路,以下两个方法拯救了地球。

2024-04-11 12:48:52 389

原创 uml时序图中,消息箭头和消息调用箭头有什么区别

2. 消息调用箭头:消息调用箭头用来表示调用关系,特别是在类方法调用另一个类的静态方法时使用。消息调用箭头通常是从调用者指向被调用者,表示一个类方法调用另一个类的静态方法的关系。1. 消息箭头:消息箭头用来表示消息在不同对象之间的传递,通常是实例方法之间的调用关系。所以,消息箭头用于表示实例方法之间的消息传递,而消息调用箭头用于表示类方法之间的调用关系,特别是在调用静态方法时。在UML时序图中,消息箭头和消息调用箭头是用来表示不同类型的消息传递关系的符号。

2024-04-10 11:14:38 42

原创 uml图中实线消息调用和虚线消息调用怎么用

而虚线消息调用则表示一个类对象或实例向另一个类对象或实例发送消息,但并不直接调用其方法,而是通过某种方式进行间接调用或者需要进一步解析才能确定最终的调用。直白点说,如果你的类对象调用的是他自己的类方法,就用实线调用,如果某个类的方法是通过间接方式,譬如getInstance获取类对象,静态调用,或者方法里面套别的类方法,你不想过于深挖,就用虚线,表示间接调用。这种消息调用是在程序运行时发生的实际调用。所以,实线消息调用表示直接的方法调用,而虚线消息调用则表示间接或者抽象的调用关系。

2024-04-10 10:19:17 33

原创 C++类的内存分配问题理解

但类的静态数据成员属于类本身,而不是类的具体实例,因此它们在类加载到内存时就会被分配内存空间。在C++中,当程序加载时,类的定义会被加载到内存中,这意味着编译器会知道类的结构和成员函数的定义,但并不会为该类的任何对象分配内存空间。简而言之,类的加载到内存只是为了让编译器了解类的定义,而类的实例化对象时才会真正分配内存空间来存储对象的数据和函数。类的定义只是描述了类的结构和成员函数,实际的内存分配发生在创建类的对象时。当你创建类的对象时,才会分配内存来存储该对象的数据成员和虚函数表等信息。

2024-04-07 09:18:25 378

原创 c++中函数传递const引用有什么作用

1. 避免拷贝造成的性能损耗:当传递一个大型对象作为参数时,如果不使用引用而是直接传递对象,会触发对象的拷贝构造函数,导致额外的性能开销。函数`printValue`接受一个const int引用作为参数,确保不会修改传入的值。2. 防止意外修改:通过将参数声明为const引用,可以确保函数内部不会意外修改传入的参数。3. 允许传递临时对象:const引用可以接受临时对象作为参数,因为临时对象无法被修改,所以使用const引用可以更灵活地处理临时对象的传递。// value 不能在这里被修改。

2024-03-26 09:21:22 208

原创 毕设作品参考之C++Qt日程安排软件使用JSON文件记录计划任务附源码

整个程序代码上来说比较简单,不过功能点还有比较多的。核心点就是将输入文字序列化到JSON文件中。其他功能包括添加事务日志,编辑当前事务记录,删除当前事务记录操作。

2024-03-13 19:22:16 38

原创 c++qt函数中如何返回一个类对象或对象的引用

3. **返回类对象的引用:** 在函数中创建一个类对象,并通过return语句返回该对象的引用。1. 返回类对象的值: 在函数中创建一个类对象,并通过return语句返回该对象的副本。这种方式适用于较小的类对象,且在返回时不需要修改对象的情况。2. 返回类对象的指针:在函数中创建一个类对象,并通过return语句返回该对象的指针。4. 返回const引用:如果只需要读取类对象的数据而不需要修改,可以返回一个const引用,避免意外的修改。// 操作对象...

2024-03-13 14:28:32 338

原创 《咖啡茶楼收银会员管理系统》数据库创建及Qt增删改查数据库代码

会员信息表Members、商品信息表Products、库存信息表Inventory、员工信息表Employees和销售记录表Sales

2024-03-12 23:44:20 26

原创 qt如何将QHash中的数据有序地放入到QList中

可以遍历QHash中的键值对,并将其按照键的顺序或值的大小插入到QList中,直接用for循环即可。

2024-03-12 22:45:41 150

原创 Qt编译程序时出现expected type-specifier before xxx解决办法

这个问题的意思是,需要在类前添加类型标识符,但是,我的类改了名字以后,一切正常。经过再三检查,发现原来是头文件包含里的最顶上的#ifndef XXXX。这个错误的出现是因为我直接拷贝了一个类的头文件和cpp文件,然后改了里面的类名,在调用的地方已经加了头文件包含,但却反复出现此问题。这个防止文件重复包含的语句和之前的文件重复了,修改一下,就解决了。

2024-03-06 09:32:10 278 1

原创 git中某些二进制文件无法合并,怎么操作pull更新

3. 在冲突标记(`<<<<<<< HEAD`、`=======`、`>>>>>>> branch_name`)之间,手动编辑文件,将冲突的部分修改为你期望的内容。但是,二进制文件,类似so,某些图片之类的文件,我们是无法编辑的,你是看不到里面的内容的,所以,我们要解决冲突,就是直接标记为已合并。当在Git中进行`pull`操作时,如果遇到某些二进制文件无法合并的情况,通常会导致冲突。4. 保存文件后,运行`git add <file>`命令将解决冲突的文件标记为已解决。// 本地版本的内容。

2024-01-17 17:16:04 634

原创 C++中什么时候应该使用结构体,什么时候应该使用类

结构体也可以显式地使用访问控制关键词,如果你声明的变量或方法没有写在任何访问控制关键词下,那么默认为public。private的意思是,该成员变量只能在该类的内部定义中使用,如果你的类对象在别的类的代码中,就无法直接调用了。- 结构体的成员变量默认为公共可见的,可以直接通过结构体实例对象来访问和修改。- 类的成员变量默认为私有可见的,只能通过类的成员函数来访问和修改。- 结构体通常用于组织和存储相关的数据,不包含复杂的行为和方法。- 类可以包含成员函数,用于定义类的行为和操作。

2024-01-11 01:10:07 569

原创 C++处方管理系统架构——设计模式应用场景分析

在C++处方管理系统中,可以使用设计模式来解决各种常见的问题,包括药品对象的创建、处方审核行为管理等。- 用于实现对象之间的发布-订阅机制,例如用于通知处方审核模块有新的处方需要审核。其他设计模式,如策略模式、装饰器模式、命令模式等,供大家自行添加学习。- 用于对象的创建,例如创建不同类型的药品对象或处方对象。// 显示对扑热息痛的信息 }// 通知观察者 }// 获取药品库存数量。// 显示阿莫西林的。// 单例模式示例代码。// 观察者模式示例。

2024-01-09 12:33:27 553

原创 C++供应链管理模块的图数据结构描述

M在某些供应链管理模块,我们使用邻接表来表示图,其中每个顶点表示一个节点(例如仓库、生产厂家、分销商等),每条边表示节点之间的关系(例如运输路径、供应关系等)。// 例如,表示运输距离 Edge edge2 = {150};定义`Vertex`和`Edge`结构来表示顶点和边,然后使用`Graph`类来构建图。// 边的权重,表示运输距离、供应关系。// 可以添加其他属性,如运输方式、运输成本等};// 可以添加其他属性,如库存量、生产能力等};// 边表示节点之间的关。// 使用邻接表表示。

2024-01-09 10:52:59 419

原创 Qt3D 材质模块使用说明

使用 `QTextureMaterial` 可以创建一个基于纹理的材质,通过设置纹理贴图、环境贴图、法线贴图等属性,可以定义对象的外观和表面特性。- 使用 `QRenderPass` 可以创建一个渲染通道对象,并将其添加到效果的 `renderPasses` 属性中,以实现多通道渲染效果。- 使用 `QEffect` 可以创建一个渲染效果对象,并将其赋给材质的 `effect` 属性。- `QMaterial` 类代表了3D对象的材质,它定义了对象的外观、表面特性和渲染效果。

2024-01-04 15:03:46 776

原创 Qt3D 纹理模块使用说明

使用 `QTextureImage` 可以创建一个纹理图像对象,并将其赋给纹理对象的 `images` 属性,以定义纹理的图像数据。- 通过设置纹理对象的 `wrapMode` 属性,可以定义纹理的环绕模式,包括重复、镜像重复、边缘填充等。这些类,可以在 Qt3D 中定义和管理3D对象的纹理贴图,包括2D纹理、3D纹理、纹理图像等。在 Qt3D 中,纹理相关的类用于定义和管理3D对象的纹理贴图,以及与纹理相关的属性和特性。- 通过设置不同的纹理图像,可以定义对象的外观和表面特性。

2024-01-04 15:00:49 764

原创 Qt3D 输入类处理鼠标键盘动作

代码中,我们创建了一个简单的3D场景,并添加了鼠标和键盘控制器。// 添加鼠标控制器 Qt3DInput::QMouseDevice *mouseDevice = new Qt3DInput::QMouseDevice(rootEntity);// 创建3D实体 Qt3DCore::QEntity *cubeEntity = new Qt3DCore::QEntity(rootEntity);// 将根实体添加到3D窗口中。// 创建3D场景根实体。// 创建Qt3D窗。// 添加键盘控制器。

2024-01-02 12:45:53 805

原创 Qt3D类使用说明

2. **Qt3DRender:** 这个模块包含了一些用于渲染的类,比如`Qt3DRender::QCamera`代表了摄像机,`Qt3DRender::QMaterial`代表了材质,`Qt3DRender::QMesh`代表了网格等。5. **Qt3DExtras:** 这个模块包含了一些额外的类,用于简化一些常见的3D场景创建和渲染操作,比如`Qt3DExtras::QForwardRenderer`用于实现前向渲染。Qt3D的还涉及3D图形编程、着色器编写等,因此也需要进行学习的。

2024-01-02 10:16:27 950

原创 C++客户关系管理系统架构——设计模式应用场景代码分析

客户关系管理系统的客户服务与支持模块可以使用多种设计模式,包括但不限于工厂模式、观察者模式、策略模式和模板方法模式等。// 处理新的客户服务请求 }// 具体处理产品问题的逻辑。// 具体处理退款请求的逻辑。// 默认处理逻辑 }// 优先处理逻辑 }// 具体的处理步骤。// 客户服务人员类(观察者)// 客户服务请求处理策略接口。// 具体的客户服务请求处理策。// 客户服务请求处理模板。// 抽象客户服务请求类。// 具体客户服务请求类。// 客户服务请求工厂。

2024-01-02 09:55:24 562 1

原创 Qt底层机制之对象树总结

当一个QObject对象被添加为另一个QObject对象的子对象时,Qt会自动管理它们之间的父子关系。在对象树中,QObject对象的父子关系只能是一对一的关系,即一个子对象只能有一个父对象。当一个父对象被销毁时,它会自动销毁其所有的子对象。4. 属性系统:Qt的属性系统允许在对象上定义自定义属性,这些属性可以通过对象名或者对象树进行访问。5. 对象删除:当一个QObject对象被删除时,它会自动删除其所有的子对象。设置父子关系后,当父对象被删除时,子对象1和子对象2也会被自动删除。

2023-12-28 00:20:31 662

原创 Qt底层机制总结

通过信号和槽,可以实现对象之间的事件传递和响应。信号被触发时会发送消息,槽函数则负责接收和处理这些消息,Qt中的信号槽机制是一种基于回调的机制,用于实现对象之间的松耦合通信。事件循环负责从操作系统接收事件,将事件分发给对应的对象,并调用相应的事件处理函数。事件循环使得Qt应用程序可以响应用户的输入和系统的事件。4. 内存管理:Qt提供了一套内存管理机制,包括自动化的内存分配和释放,以及对象的父子关系和所有权管理。通过对象树,可以方便地管理和组织对象,实现对象的自动创建和销毁,以及对对象的层次访问。

2023-12-27 22:29:41 1201

原创 智能电子相册系统代码分析——图片上传和存储模块

上传图片图片上传

2023-12-27 12:37:57 687

原创 Qt 使用eventfilter处理绘图事件

我们创建了一个自定义的`DrawingWidget`类,继承自`QWidget`,并重写了`eventFilter`方法。在`eventFilter`方法中,我们检查事件类型是否为绘图事件(`QEvent::Paint`),如果是,我们使用`QPainter`在窗口上绘制文本。然后我们将事件过滤器安装到`widget`上,这样`widget`就能够拦截并处理绘图事件了。当`widget`接收到绘图事件时,事件将会被`eventFilter`方法拦截并处理,然后返回`true`表示事件已经被处理。

2023-12-26 15:31:51 239

原创 微信小程序电子菜单点菜系统模块代码分析

确认订单

2023-12-26 13:51:54 554 2

原创 Qt中如何提升进程间数据通信的性能

4. 使用跨平台的IPC机制:Qt提供了对跨平台的进程间通信(IPC)机制的支持,例如使用QProcess类启动子进程,并通过标准输入输出流或者共享内存进行数据交换。Qt提供了丰富的数据结构和算法类,可以根据实际需求选择合适的数据结构来提升数据处理性能。2. 使用信号与槽机制:Qt的信号与槽机制不仅可以在同一进程内部进行通信,也可以在不同进程之间进行通信。1. 使用共享内存:Qt提供了QSharedMemory类,可以用于在不同进程之间共享内存,这样可以避免数据的复制和传输,提升数据通信的性能。

2023-12-26 10:05:19 127

原创 Qt程序中如何提升数据通信的性能

5. 使用Qt的网络模块:如果涉及网络通信,可以使用Qt的网络模块(如QTcpSocket、QUdpSocket、QTcpServer等)来实现高性能的网络通信,同时可以考虑使用Qt的SSL支持来保障通信的安全性。1. 使用异步通信:在进行网络通信或者与外部设备通信时,可以使用Qt的异步通信机制,如Qt的信号和槽机制、QNetworkAccessManager类等。6. 数据缓存:对于一些频繁访问的数据,可以考虑在内存中进行缓存,避免重复的数据读取操作,从而提升数据访问的性能。

2023-12-26 10:02:25 64

原创 QML中加载数据时卡顿怎么处理

5. 使用Qt Quick Controls 2中的ListView和TableView:Qt Quick Controls 2中的ListView和TableView组件具有内置的虚拟化功能,可以在滚动时只创建可见区域的项,从而减少内存占用和加快加载速度。例如,在列表或表格中,可以只加载当前可见区域的数据,当用户滚动时再加载新的数据。这样可以减少需要在QML中处理的数据量,提高性能。4. 数据缓存:对于一些不经常变化的数据,可以考虑在应用程序启动时将数据缓存到内存中,避免重复的数据加载操作。

2023-12-25 17:07:22 119

原创 Qt处理鼠标滚轮事件,放大缩小地图

我们创建了一个自定义的MapGraphicsView类,继承自QGraphicsView,并重写了它的`wheelEvent`函数来处理鼠标滚轮事件。在`wheelEvent`函数中,我们根据滚轮滚动的角度来计算缩放因子,然后使用`scale`函数来放大或缩小地图。当处理鼠标滚轮事件来放大或缩小地图时,通常需要使用QGraphicsView或QGraphicsScene来显示地图,并且需要捕获鼠标滚轮事件来改变视图的缩放级别。// 向上滚动,放大地图。// 向下滚动,缩小地图。// 获取滚轮滚动的角度。

2023-12-25 10:00:33 606

原创 各类图形库创建图层的方式示例

GDAL(Geospatial Data Abstraction Library)和OGR(Simple Features Library)是用于读写地理空间数据的库。你可以使用它们来创建图层并写入地理空间数据。不同的图形库和地理信息系统(GIS)软件提供了不同的方式来创建图层。Fiona是Python中用于读写地理空间数据的库,它可以与GDAL/OGR一起使用来创建图层并写入地理空间数据。在QGIS软件中,你可以通过界面操作或者使用Python脚本来创建图层。// 创建要素并写入图。

2023-12-25 09:56:18 49

原创 Qt qlistwidget自绘,隔行换色

在这个示例中,我们创建了一个自定义的QStyledItemDelegate子类CustomItemDelegate,并重写了其paint()方法。在paint()方法中,我们首先调用基类的绘制方法以保留默认的绘制行为,然后根据项的索引来判断是否为偶数行,从而设置不同的背景颜色。在Qt中,你可以使用自定义绘制来改变QListWidget中项的外观。// 调用基类的绘制方法以保留默认的绘制行为 QStyledItemDelegate::paint(painter, option, index);

2023-12-20 12:40:42 185

原创 如何使用C语言中的signal 信号函数

然后在`main`函数中使用`signal`函数来注册`signalHandler`函数,以处理`SIGINT`信号。当程序运行时,它会发送`SIGINT`信号,然后`signalHandler`函数将被调用来处理这个信号。在C语言中,`signal`函数用于注册信号处理程序,即在接收到特定信号时执行指定的处理函数。// 发送SIGINT信号 return 0;示例中,我们首先定义了一个名为`signalHandler`的信号处理函数。// 执行信号处理的逻。

2023-12-20 12:30:10 109

原创 C++父类和子类的指针静态转换和动态转换有什么区别

动态转换是在运行时进行的转换,会进行类型检查以确保转换的安全性。如果转换是安全的,动态转换将返回转换后的指针;这意味着静态转换不会检查转换的类型是否是安全的,因此需要程序员来保证转换的安全性。2. 静态转换不会检查转换的类型是否安全,需要程序员保证转换的安全性;3. 静态转换可以用于任何类型的转换,包括非多态类之间的转换;在C++中,父类和子类的指针静态转换和动态转换有一些重要的区别,主要涉及到转换的安全性和行为。它可以将父类指针转换为子类指针,或者将子类指针转换为父类指针,而不进行类型检查。

2023-12-20 12:27:23 73

原创 C++/Qt如何处理程序崩溃

在这个示例中,我们使用 `std::signal()` 函数来注册信号处理函数。当程序崩溃时,信号处理函数 `signalHandler()` 将被调用,并给用户一个提示,然后退出程序。// 捕获异常终止信号 // 在这里写你的程序代码 // ...在 C++ 中,程序崩溃时可以通过信号处理机制来捕获崩溃信号,并在程序崩溃时给用户一个提示。错误码:" << signal << std::endl;在信号处理函数中,我们可以添加一些额外的代码,比如记录日志等,以便更好地排查程序崩溃的原因。

2023-12-20 09:36:25 257

原创 Qt中,将一个结构体转为qbytearray后,如何将这个qpqbytearray重新恢复为之前的结构体

在 Qt 中,如果你有一个自定义的结构体,并将其转换为 QByteArray,然后想要将 QByteArray 转换回原始的结构体,你可以使用 Qt 的 QDataStream 类来实现这个转换过程。现在,假设你已经将这个结构体转换为 QByteArray,你可以使用 QDataStream 来将 QByteArray 转换回原始的结构体。在这个示例中,我们使用 QDataStream 对象来读取 QByteArray 中的数据,并将其填充到原始的 Line 结构体中。// 之前转换得到的。

2023-12-19 17:03:16 300

原创 Git上有很多二进制文件更新了,无法合并,git stash pop 的时候提示冲突,如何解决

在冲突的文件中,Git 会在冲突部分的上方和下方标记出冲突的内容,你需要手动编辑这些文件,保留需要的部分,删除不需要的部分,并解决冲突。当在使用 `git stash pop` 命令时遇到冲突,可能是因为之前暂存的修改与当前工作目录中的修改产生了冲突。这一步可能会产生冲突。1. 首先,使用 `git stash list` 命令查看你之前暂存的修改,找到对应的暂存项的索引(stash@{n})。在解决完所有的冲突后,使用 `git add` 命令将修改后的文件标记为已解决冲突的状态。

2023-12-19 14:36:12 426

原创 C++中定义抽象类指针的作用

我们还定义了一个指向 Animal 类的指针 animalPtr,它可以指向任何派生类对象。在 main() 函数中,我们将 animalPtr 指向 Cat 对象和 Dog 对象,并调用它们的 makeSound() 函数。在 C++ 中,抽象类可以定义类指针。类指针是指向类对象的指针,它可以指向任何派生类对象,包括抽象类的派生类对象。因此,抽象类可以定义类指针,并且这些指针可以指向任何派生类对象,无论这些派生类是否是抽象类。// 输出 "Meow!// 输出 "Woof!

2023-12-19 00:24:49 91

原创 C++带参数的单例模式

在上面的示例中,Singleton 类包含一个私有的静态成员变量 instance,用于保存单例对象的实例。getInstance() 方法接受一个参数 config,并根据参数来创建不同的单例对象。3. 添加一个静态方法,用于获取单例对象的实例。在该方法中,可以根据参数的不同来创建不同的单例对象。1. 创建一个类,该类负责管理单例对象的创建和访问,并提供一个静态方法来获取单例对象。2. 在该类中添加一个私有的静态成员变量,用于保存单例对象的实例。4. 将构造函数设为私有,以防止外部代码直接实例化该类。

2023-12-18 12:07:33 381 1

原创 Qt自绘进度条

在上面的代码中,我们创建了一个名为 CustomProgressBar 的自定义进度条类,继承自 QWidget。进度条的值由 setValue 方法设置,并在更新值后调用 update() 方法通知窗口进行重绘。要使用这个自绘的进度条,你可以在你的窗口类中创建 CustomProgressBar 对象,并将其添加到布局中,或者直接设置为窗口的子控件。通过上面的代码,你可以在窗口中使用自绘的进度条,并根据需要设置进度条的值,进度条会自动更新并重新制。// 通知窗口进行绘。

2023-12-14 12:36:31 105

毕设作品参考之C++Qt日程安排软件使用JSON文件记录计划任务附源码

毕设作品参考之C++Qt日程安排软件使用JSON文件记录计划任务附源码

2024-03-13

空空如也

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

TA关注的人

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