1号程序媛
全方位实战项目修炼功法,助力每一个IT人自学成才,走上自己的修炼大道,早日成仙。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
cmake findpackage 错误一次性搞懂
如果你已经安装了该package,但是依然告知你没找到,那么肯定是你后面的某些模块错误了,导致找不到,从而提示not_found。如果确实没有,那么就需要使用package-config配置 或者直接设置include 和target link 参数。另外,cmake 要找某个模块,会去安装目录下找该模块的findxxx.cmake。所以如果你的那个模块找不到,那就去安装目录看看,是不是真的没有,保证模块名一致。原创 2025-09-05 10:41:26 · 143 阅读 · 0 评论 -
VScode配置Mingw64 Terminal终端
快捷键:ctrl+shift+p可以打开VScode搜索,然后输入settings.json,就可以打开默认的配置json,将下面有用的Mingw64的那一段填入即可。这里直接给出整个settings.json中的Mingw配置,你只需要换个Mingw路径就可以了。注意,上面的VScode默认终端那一项,是需要填的你想设置为默认终端的配置项名称。VScode里面配置Mingw64终端实际上比较简单,但是也不简单。原创 2025-03-17 01:36:03 · 523 阅读 · 0 评论 -
Qt 开源协议一览中文版(GNU GPL协议),做产品的必读
如果您与从事软件分发的第三方达成安排,根据该安排您根据传递活动的程度向第三方支付费用,并且根据该安排第三方向任何从您处接收覆盖作品的方授予歧视性专利许可 (a) 与您传递的覆盖作品副本(或从这些副本制作的副本)相关,或 (b) 主要与包含覆盖作品的特定产品或编译相关,则您不得传递覆盖作品,除非您在该安排达成或该专利许可授予之前已进入该安排。那些为您制作或运行覆盖作品的人必须完全代表您,在您的指导和控制下进行,且条款禁止他们在与您的关系之外制作您版权材料的任何副本。您也可以将其应用于您的程序。原创 2025-03-08 13:09:57 · 564 阅读 · 0 评论 -
Qt开源版协议一览(MICROSOFT 软件许可条款),做产品的必读
如果您打算在 Windows 应用商店中提供您的程序,则该程序必须符合应用开发者协议中定义的认证要求,当前版本位于:[https://msdn.microsoft.com/en-us/library/windows/apps/hh694058.aspx](https://msdn.microsoft.com/en-us/library/windows/apps/hh694058.aspx)。您正在处理的文档的一部分也可能包含在内,但报告中的这些信息或收集的有关硬件或软件使用的任何信息不会用于识别或联系您。原创 2025-03-08 12:04:46 · 242 阅读 · 0 评论 -
C++开发IDE用VisualStudio好还是QtCreator好?
但是但你需要windows SDK的支持的时候,具体来说,就是操作窗口,操作注册表,操作Windows进程,系统输入法,directX之类的api时,就需要考虑还是用回VisualStudio吧。当然了,VisualStudio和QtCreator本身就不是一个量级,VS越做越大,庞大的插件库也使得他能够支持从嵌入式到手机端,从web到脚本,甚至游戏,仿真等等各个领域的开发任务。还有类视图,项目布局,代码导航跳转,格式重排,等等各项功能,在QtCreator中用的都很舒服,但是VS中却用的很不爽。原创 2024-08-27 09:32:25 · 1830 阅读 · 0 评论 -
Qt6 qml文件导入系统组件时不再需要版本号
想要看是否有这个组件,譬如Controls.Styles这个组件,我们可以直接使用帮助文档查看,也可以去到安装目录下的qml/QtQuick/Controls目录下查看是否有这个组件。qt开发中,以往在Qt5中,我们导入quick组件的时候总是要写版本号,挺麻烦的,而现在Qt6中qml导入组件无需再使用版本号了。qml中的组件就跟Java中的包一样,实际上import这个语法就可以看出来。原创 2024-07-30 16:09:16 · 413 阅读 · 0 评论 -
解决qt qml中引用其他qml文件组件时提示找不到该qml文件
想导入一个LoginScreen.qml的组件,结果总是提示我找不到。改为resolve地址就可以了。原创 2024-07-30 15:50:18 · 611 阅读 · 0 评论 -
Qt中QTcpServer处理客户端连接及通信步骤
qt中的QTcpServer是Qt中用于创建TCP服务器的类,它允许你在应用程序中实现TCP/IP服务器端。当有客户端连接到服务器时,QTcpServer会发出`newConnection()`信号。- `nextPendingConnection()`函数返回一个连接到服务器的新客户端的QTcpSocket对象。在`newClientConnection`槽函数中编写代码来处理新客户端的连接。在服务器启动时,调用`listen()`函数来监听一个特定的端口。`1234`是你选择的服务器端口号。原创 2024-07-29 23:03:05 · 368 阅读 · 0 评论 -
解决Qt6 error: The kit needs to define a CMake tool to parse this project.
具体原因可能和cmake的版本,以及是否设置为默认有关。另外也和QtCreator中自带的cmake工具有关系。所以,如果你出现了这个问题,就试试这几个路子吧。在编辑菜单里面将错误的那个删掉,设置另一个为默认即可。上述错误,就是我在Windows10下运行cmake项目总是报错的一个问题。cmake对于Qt6来说很重要,所以学会cmake是必须的。明明路径已经配好了,却总是报错。原创 2024-07-29 15:10:38 · 1331 阅读 · 0 评论 -
Qt3D创建3D物体步骤
5.给立体图形添加材质,添加坐标位置,添加纹理,添加其他效果。6.创建摄像头,设置摄像头的属性,父指针为根实体。4.创建立体图形,即物体网格,设置物体的属性。3.创建物体实体,父指针为根实体。7.设置窗口根实体,显示窗口。1.创建一个3D窗口。原创 2024-07-24 08:32:05 · 682 阅读 · 0 评论 -
C++中传递指针和传递引用应用场合的区别
传递空值:需要传递空值或者表示没有对象的情况时,使用指针更为合适,因为指针可以为空(null)。- 对象可选性:如果函数需要接受可选的对象或者需要在函数内部改变指向的对象,使用指针是更合适的选择。- 性能优化:引用通常比指针更为高效,因为不涉及指针的间接性,避免了指针操作带来的开销。- 改变原始对象:无论是指针还是引用,都能够实现对原始对象的直接修改,而不是修改其副本。- 避免拷贝开销:无论是指针还是引用,都可以用于避免因为传递大型对象而带来的拷贝开销。原创 2024-07-18 08:34:11 · 211 阅读 · 0 评论 -
解决Qt6 OpenCV项目编译出现错误undefined reference to symbol ‘cv::cvtColor,无法解析的符号
在一次Qt6 OpenCV项目编译的过程中,出现错误undefined reference to symbol 'cv::cvtColor,无法解析的符号,问题是查看INCLUDEPATH和LIBS,都已经添加正确。在项目的生成目录下,这里我指定的DESTDIR为项目目录下的bin目录。将OpenCV bin目录下的dll文件都给搬过来,然后再运行Ctrl+R,这个错误消失。而且这个函数也可以在头文件中索引到。接着就可以继续构建运行了。原创 2024-07-17 08:24:39 · 497 阅读 · 0 评论 -
Qt6 3D开发如何给平面体添加草地纹理图片
在Qt6中,纹理图片是以纹理材质的形式被添加到立体图形(mesh)上的。通过给实体添加组件的方式,将纹理材质使用在实体上。原创 2024-07-12 08:31:28 · 158 阅读 · 0 评论 -
Qt6 qcustomplot在图表上画一条直线
另外一点就是qcustomplot中的replot就相当于Qt中的update,由于qcustomplot是属于绘图类的接口库,所以,基本是只要对图表有操作,就需要使用replot更新。主要注意的是Qt中的QHBoxLayout等Qt类对象在被引用的情况下是可以使用局部变量的,典型的如setLayout这类型的函数接口,都可以使用局部变量,而不是new对象。原创 2024-07-03 01:14:22 · 676 阅读 · 0 评论 -
Qt6中如何将QList转为QSet?
QSet是一个具有唯一值的哈希集合。比较有用的是QSet里面的intersect查找两个集合中不同元素,并合并。转换过程比较简单,第一种是直接用迭代器。原创 2024-06-26 00:50:28 · 492 阅读 · 0 评论 -
Qt6 windows10下悬浮按钮栏实现
程序的角度来看,它就是实现了一个悬浮按钮栏的功能。当然了,你也可以做成悬浮列表,悬浮下拉框,悬浮xxx等控件。打王者荣耀的时候,你是否有看到中间的按钮是悬浮在屏幕的左右侧,以及中下位置,背景则是一个播放着视频的画面。这里,我们实现在Windows的版本。手机版大家自己查阅资料,或者以后我有空才做一个。原创 2024-06-25 00:45:56 · 427 阅读 · 0 评论 -
Qt6视频播放器项目框架代码
使用Qt6的QMediaPlayer,QVideoWidget实现。原创 2024-06-19 22:37:34 · 300 阅读 · 0 评论 -
uml时序图中,消息箭头和消息调用箭头有什么区别
2. 消息调用箭头:消息调用箭头用来表示调用关系,特别是在类方法调用另一个类的静态方法时使用。消息调用箭头通常是从调用者指向被调用者,表示一个类方法调用另一个类的静态方法的关系。1. 消息箭头:消息箭头用来表示消息在不同对象之间的传递,通常是实例方法之间的调用关系。所以,消息箭头用于表示实例方法之间的消息传递,而消息调用箭头用于表示类方法之间的调用关系,特别是在调用静态方法时。在UML时序图中,消息箭头和消息调用箭头是用来表示不同类型的消息传递关系的符号。原创 2024-04-10 11:14:38 · 701 阅读 · 0 评论 -
uml图中实线消息调用和虚线消息调用怎么用
而虚线消息调用则表示一个类对象或实例向另一个类对象或实例发送消息,但并不直接调用其方法,而是通过某种方式进行间接调用或者需要进一步解析才能确定最终的调用。直白点说,如果你的类对象调用的是他自己的类方法,就用实线调用,如果某个类的方法是通过间接方式,譬如getInstance获取类对象,静态调用,或者方法里面套别的类方法,你不想过于深挖,就用虚线,表示间接调用。这种消息调用是在程序运行时发生的实际调用。所以,实线消息调用表示直接的方法调用,而虚线消息调用则表示间接或者抽象的调用关系。原创 2024-04-10 10:19:17 · 413 阅读 · 0 评论 -
毕设作品参考之C++Qt日程安排软件使用JSON文件记录计划任务附源码
整个程序代码上来说比较简单,不过功能点还有比较多的。核心点就是将输入文字序列化到JSON文件中。其他功能包括添加事务日志,编辑当前事务记录,删除当前事务记录操作。原创 2024-03-13 19:22:16 · 280 阅读 · 0 评论 -
c++qt函数中如何返回一个类对象或对象的引用
3. **返回类对象的引用:** 在函数中创建一个类对象,并通过return语句返回该对象的引用。1. 返回类对象的值: 在函数中创建一个类对象,并通过return语句返回该对象的副本。这种方式适用于较小的类对象,且在返回时不需要修改对象的情况。2. 返回类对象的指针:在函数中创建一个类对象,并通过return语句返回该对象的指针。4. 返回const引用:如果只需要读取类对象的数据而不需要修改,可以返回一个const引用,避免意外的修改。// 操作对象...原创 2024-03-13 14:28:32 · 791 阅读 · 0 评论 -
《咖啡茶楼收银会员管理系统》数据库创建及Qt增删改查数据库代码
会员信息表Members、商品信息表Products、库存信息表Inventory、员工信息表Employees和销售记录表Sales原创 2024-03-12 23:44:20 · 180 阅读 · 0 评论 -
qt如何将QHash中的数据有序地放入到QList中
可以遍历QHash中的键值对,并将其按照键的顺序或值的大小插入到QList中,直接用for循环即可。原创 2024-03-12 22:45:41 · 321 阅读 · 0 评论 -
Qt编译程序时出现expected type-specifier before xxx解决办法
这个问题的意思是,需要在类前添加类型标识符,但是,我的类改了名字以后,一切正常。经过再三检查,发现原来是头文件包含里的最顶上的#ifndef XXXX。这个错误的出现是因为我直接拷贝了一个类的头文件和cpp文件,然后改了里面的类名,在调用的地方已经加了头文件包含,但却反复出现此问题。这个防止文件重复包含的语句和之前的文件重复了,修改一下,就解决了。原创 2024-03-06 09:32:10 · 2995 阅读 · 1 评论 -
Qt3D 材质模块使用说明
使用 `QTextureMaterial` 可以创建一个基于纹理的材质,通过设置纹理贴图、环境贴图、法线贴图等属性,可以定义对象的外观和表面特性。- 使用 `QRenderPass` 可以创建一个渲染通道对象,并将其添加到效果的 `renderPasses` 属性中,以实现多通道渲染效果。- 使用 `QEffect` 可以创建一个渲染效果对象,并将其赋给材质的 `effect` 属性。- `QMaterial` 类代表了3D对象的材质,它定义了对象的外观、表面特性和渲染效果。原创 2024-01-04 15:03:46 · 1187 阅读 · 0 评论 -
Qt3D 纹理模块使用说明
使用 `QTextureImage` 可以创建一个纹理图像对象,并将其赋给纹理对象的 `images` 属性,以定义纹理的图像数据。- 通过设置纹理对象的 `wrapMode` 属性,可以定义纹理的环绕模式,包括重复、镜像重复、边缘填充等。这些类,可以在 Qt3D 中定义和管理3D对象的纹理贴图,包括2D纹理、3D纹理、纹理图像等。在 Qt3D 中,纹理相关的类用于定义和管理3D对象的纹理贴图,以及与纹理相关的属性和特性。- 通过设置不同的纹理图像,可以定义对象的外观和表面特性。原创 2024-01-04 15:00:49 · 1208 阅读 · 0 评论 -
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 · 1028 阅读 · 0 评论 -
Qt3D类使用说明
2. **Qt3DRender:** 这个模块包含了一些用于渲染的类,比如`Qt3DRender::QCamera`代表了摄像机,`Qt3DRender::QMaterial`代表了材质,`Qt3DRender::QMesh`代表了网格等。5. **Qt3DExtras:** 这个模块包含了一些额外的类,用于简化一些常见的3D场景创建和渲染操作,比如`Qt3DExtras::QForwardRenderer`用于实现前向渲染。Qt3D的还涉及3D图形编程、着色器编写等,因此也需要进行学习的。原创 2024-01-02 10:16:27 · 1388 阅读 · 0 评论 -
Qt底层机制之对象树总结
当一个QObject对象被添加为另一个QObject对象的子对象时,Qt会自动管理它们之间的父子关系。在对象树中,QObject对象的父子关系只能是一对一的关系,即一个子对象只能有一个父对象。当一个父对象被销毁时,它会自动销毁其所有的子对象。4. 属性系统:Qt的属性系统允许在对象上定义自定义属性,这些属性可以通过对象名或者对象树进行访问。5. 对象删除:当一个QObject对象被删除时,它会自动删除其所有的子对象。设置父子关系后,当父对象被删除时,子对象1和子对象2也会被自动删除。原创 2023-12-28 00:20:31 · 988 阅读 · 0 评论 -
Qt底层机制总结
通过信号和槽,可以实现对象之间的事件传递和响应。信号被触发时会发送消息,槽函数则负责接收和处理这些消息,Qt中的信号槽机制是一种基于回调的机制,用于实现对象之间的松耦合通信。事件循环负责从操作系统接收事件,将事件分发给对应的对象,并调用相应的事件处理函数。事件循环使得Qt应用程序可以响应用户的输入和系统的事件。4. 内存管理:Qt提供了一套内存管理机制,包括自动化的内存分配和释放,以及对象的父子关系和所有权管理。通过对象树,可以方便地管理和组织对象,实现对象的自动创建和销毁,以及对对象的层次访问。原创 2023-12-27 22:29:41 · 1759 阅读 · 0 评论 -
Qt 使用eventfilter处理绘图事件
我们创建了一个自定义的`DrawingWidget`类,继承自`QWidget`,并重写了`eventFilter`方法。在`eventFilter`方法中,我们检查事件类型是否为绘图事件(`QEvent::Paint`),如果是,我们使用`QPainter`在窗口上绘制文本。然后我们将事件过滤器安装到`widget`上,这样`widget`就能够拦截并处理绘图事件了。当`widget`接收到绘图事件时,事件将会被`eventFilter`方法拦截并处理,然后返回`true`表示事件已经被处理。原创 2023-12-26 15:31:51 · 498 阅读 · 0 评论 -
Qt中如何提升进程间数据通信的性能
4. 使用跨平台的IPC机制:Qt提供了对跨平台的进程间通信(IPC)机制的支持,例如使用QProcess类启动子进程,并通过标准输入输出流或者共享内存进行数据交换。Qt提供了丰富的数据结构和算法类,可以根据实际需求选择合适的数据结构来提升数据处理性能。2. 使用信号与槽机制:Qt的信号与槽机制不仅可以在同一进程内部进行通信,也可以在不同进程之间进行通信。1. 使用共享内存:Qt提供了QSharedMemory类,可以用于在不同进程之间共享内存,这样可以避免数据的复制和传输,提升数据通信的性能。原创 2023-12-26 10:05:19 · 457 阅读 · 0 评论 -
Qt程序中如何提升数据通信的性能
5. 使用Qt的网络模块:如果涉及网络通信,可以使用Qt的网络模块(如QTcpSocket、QUdpSocket、QTcpServer等)来实现高性能的网络通信,同时可以考虑使用Qt的SSL支持来保障通信的安全性。1. 使用异步通信:在进行网络通信或者与外部设备通信时,可以使用Qt的异步通信机制,如Qt的信号和槽机制、QNetworkAccessManager类等。6. 数据缓存:对于一些频繁访问的数据,可以考虑在内存中进行缓存,避免重复的数据读取操作,从而提升数据访问的性能。原创 2023-12-26 10:02:25 · 334 阅读 · 0 评论 -
QML中加载数据时卡顿怎么处理
5. 使用Qt Quick Controls 2中的ListView和TableView:Qt Quick Controls 2中的ListView和TableView组件具有内置的虚拟化功能,可以在滚动时只创建可见区域的项,从而减少内存占用和加快加载速度。例如,在列表或表格中,可以只加载当前可见区域的数据,当用户滚动时再加载新的数据。这样可以减少需要在QML中处理的数据量,提高性能。4. 数据缓存:对于一些不经常变化的数据,可以考虑在应用程序启动时将数据缓存到内存中,避免重复的数据加载操作。原创 2023-12-25 17:07:22 · 621 阅读 · 0 评论 -
Qt处理鼠标滚轮事件,放大缩小地图
我们创建了一个自定义的MapGraphicsView类,继承自QGraphicsView,并重写了它的`wheelEvent`函数来处理鼠标滚轮事件。在`wheelEvent`函数中,我们根据滚轮滚动的角度来计算缩放因子,然后使用`scale`函数来放大或缩小地图。当处理鼠标滚轮事件来放大或缩小地图时,通常需要使用QGraphicsView或QGraphicsScene来显示地图,并且需要捕获鼠标滚轮事件来改变视图的缩放级别。// 向上滚动,放大地图。// 向下滚动,缩小地图。// 获取滚轮滚动的角度。原创 2023-12-25 10:00:33 · 1262 阅读 · 0 评论 -
C++/Qt如何处理程序崩溃
在这个示例中,我们使用 `std::signal()` 函数来注册信号处理函数。当程序崩溃时,信号处理函数 `signalHandler()` 将被调用,并给用户一个提示,然后退出程序。// 捕获异常终止信号 // 在这里写你的程序代码 // ...在 C++ 中,程序崩溃时可以通过信号处理机制来捕获崩溃信号,并在程序崩溃时给用户一个提示。错误码:" << signal << std::endl;在信号处理函数中,我们可以添加一些额外的代码,比如记录日志等,以便更好地排查程序崩溃的原因。原创 2023-12-20 09:36:25 · 861 阅读 · 0 评论 -
Qt中,将一个结构体转为qbytearray后,如何将这个qpqbytearray重新恢复为之前的结构体
在 Qt 中,如果你有一个自定义的结构体,并将其转换为 QByteArray,然后想要将 QByteArray 转换回原始的结构体,你可以使用 Qt 的 QDataStream 类来实现这个转换过程。现在,假设你已经将这个结构体转换为 QByteArray,你可以使用 QDataStream 来将 QByteArray 转换回原始的结构体。在这个示例中,我们使用 QDataStream 对象来读取 QByteArray 中的数据,并将其填充到原始的 Line 结构体中。// 之前转换得到的。原创 2023-12-19 17:03:16 · 1007 阅读 · 0 评论 -
Qt自绘进度条
在上面的代码中,我们创建了一个名为 CustomProgressBar 的自定义进度条类,继承自 QWidget。进度条的值由 setValue 方法设置,并在更新值后调用 update() 方法通知窗口进行重绘。要使用这个自绘的进度条,你可以在你的窗口类中创建 CustomProgressBar 对象,并将其添加到布局中,或者直接设置为窗口的子控件。通过上面的代码,你可以在窗口中使用自绘的进度条,并根据需要设置进度条的值,进度条会自动更新并重新制。// 通知窗口进行绘。原创 2023-12-14 12:36:31 · 322 阅读 · 0 评论 -
qt QTextStream读写文件操作
接下来,我们使用`原创 2023-12-12 01:19:54 · 651 阅读 · 0 评论 -
Qt将QTextDocument对象内容写入html或者Markdown文件
示例中,我们创建了一个QTextDocument对象,将HTML内容设置为"Hello, world!然后,我们创建了一个QTextDocumentWriter对象,并将其设置为HTML格式,并指定输出文件名为"output.html"。Qt中,要将QTextDocument写入文件,可以使用QTextDocumentWriter类。// 创建一个QTextDocumentWriter对象,指定输出文件格式和文件名。// 将QTextDocument写入文件。原创 2023-12-11 23:54:39 · 703 阅读 · 0 评论
分享