- 博客(585)
- 资源 (20)
- 收藏
- 关注
原创 C++ Qt零基础入门进阶与企业级项目实战教程与学习方法分享
介绍Qt环境搭建、QtCreator / VS2019的基本使用方法,Qt整体架构、Qt信号机制,Qt内存管理等知识。
2023-09-21 23:00:33
194
原创 Qt6 TabView用法
TabView是 QML 中的一个组件,用于创建带有多个标签页的界面。每个标签页都有自己的内容,并且用户可以点击标签来切换不同的内容视图。不过在Qt6中不在支持TabView, TabBar 和 StackView 来模拟 TabView 的功能。
2023-09-21 00:47:20
43
原创 qml GroupBox用法介绍
是 QML 中的一个组件,用于为其内容提供一个带标题的框架。它可以用来组织和区分界面中的相关内容。在这个例子中,我们创建了一个标题为 “User Information” 的。提供了一个明确的视觉边界,使得用户可以知道这些控件是相关的。的属性来自定义其外观和行为,例如更改标题、颜色、大小等。
2023-09-21 00:28:41
38
原创 qml ProgressBar用法介绍
你可以通过修改backgroundprogress等。width: 300height: 30value: 0.6radius: 15radius: 15上述示例中,我们自定义了的背景为lightgray色,并将进度条的颜色设置为green。这只是的一些基本用法。在实际应用中,你还可以结合其他 QML 组件和属性来创建更丰富的交互和外观效果。希望这些示例能帮助你理解和使用。
2023-09-21 00:25:00
48
原创 qml Combobox用法介绍与代码演示
除了使用textRole外,你还可以使用delegate来自定义下拉项的显示。ComboBox {height: 40height: 30Text {在这个示例中,我们使用delegate自定义了下拉项的显示方式,并为每个项添加了一个背景色。这只是ComboBox的一些基本用法。在实际应用中,你还可以利用其他属性和方法来实现更多的功能和自定义选项。希望这些示例能帮助你理解和使用ComboBox。
2023-09-21 00:15:44
40
原创 qml Textinput 、TextField、TextEdit、TextArea用法介绍
是 Qt Quick Controls 2 中的一个高级控件,它提供了一个更为完整的用户界面,包括边框、背景、图标等。它是为了更好的桌面和移动设备体验而设计的。元素中,你不能直接设置一个边框属性,因为它主要用于纯文本输入并且没有提供直接的视觉样式。然而,你可以通过组合使用其他元素,如。是 Qt Quick 中的一个简单的文本输入控件,它可以显示和编辑单行纯文本。它是低级别的,通常没有图形化的边框或其他装饰。模块,并确保你的项目配置正确地链接了这个模块。属性提供一个小的内边距,以防止文本紧贴边框。
2023-09-20 23:36:10
57
原创 解决qml编译时出现错误ninja: build stopped: subcommand failed.
如果有类似的报错,可以检查一下qml代码是否有问题。当然在Qt Creator里也没有错误提示,很坑。解决这个编译错误其实很简单,我把。
2023-09-20 23:25:25
43
原创 qml布局管理器介绍与代码演示
Qt Quick中的布局管理器与Qt Widgets中的相似,它与定位器的不同之处在于:布局管理器会自动调整子Item的尺寸来适应界面大小的变化。
2023-09-19 21:41:22
53
原创 QML元素定位器:Row、Colum、Grid、Flow、定位器嵌套以及Repeater用法
是的,model是Repeater的一个属性。这个属性定义了Repeater应该重复的数据模型。一个数字,表示要重复的次数。一个列表模型,如ListModel。一个数组,如。其他 QML 数据模型,如等。在给出的示例中,model属性被设置为一个字符串数组,这意味着Repeater将为数组中的每个字符串创建一个组件实例。在这种情况下,你可以使用modelData属性来访问当前条目的数据。
2023-09-19 00:19:27
60
原创 qml语法介绍
qml一个普通的文本文件,后缀是.qml, 一个qml文件主要由两部分组成:(1) import语句 :这个就像C++中的头文件, 使用 import 导入qml需要的相关模块,可以查询Qt文档进行导入,注意每个版本的Qt模块声明可能都不同,相比于QWidget项目,QtQuick的变动是很大的;(2) QML对象树 :根对象是Window, 然后可以在Window中添加各种控件,例如按钮,文本,菜单等。
2023-09-17 21:15:30
59
原创 qml怎么显示网页
注意:Qt自带的WebEngine无法播放视频,CEF也一样,如果需要播放网页中的视频,则需要自己编译Qt WebEngine模块,编译很麻烦,特别容易出错。如果你使用的是Qt的在线安装程序,你可以通过Qt Maintenance Tool来添加这个模块。确保在部署应用程序之前进行充分的测试,以确保网页内容在所有目标平台上都能正确显示。来显示网页的简单示例,显示我的Qt视频教程页面。组件,可以用来在QML中显示和交互网页。以下是如何在QML中使用。QML显示网页需要使用。首先,确保你已经安装了。
2023-09-14 22:12:26
72
原创 qml ApplicationWindow使用介绍与代码演示
是 QML模块中的一个元素,用于创建一个包含导航栏、工具栏和其他常用 UI 元素的顶级窗口。在 Qt Quick Controls 应用程序中,通常会使用它作为主要的窗口元素。在使用时需要包含下面是title:设置窗口的标题。width和height:定义窗口的初始宽度和高度。visible:决定窗口是否可见。menuBar:定义窗口的菜单栏。statusBar:提供一个状态栏来显示信息。toolBar:在窗口的顶部或底部定义工具栏。:包含窗口的主要内容,通常是其他 QML 元素或组件。
2023-09-14 21:51:04
159
原创 QML、C++ 和 JS 三者之间的交互
如前面所述,您可以在 QML 文件中直接使用内联 JavaScript 代码或从外部 JS 文件中导入 JS 函数。这些是 QML、C++ 和 JS 三者之间交互的基本方式。根据您的需求,您可以深入探索并结合它们以满足您的应用需求。QML、C++ 和 JS 三者之间的交互是 Qt Quick 应用开发的核心。您可以在 C++ 中发射一个信号,然后在 QML 中连接并处理这个信号。要从 QML 调用 C++ 函数,您可以使用 Qt 的 QML 注册机制,例如。的函数,并在 QML 或 JS 中使用这些数据。
2023-09-12 00:10:51
636
原创 一文搞懂qml画布Canvas、路径绘制、文本绘制、图片绘制、基本变换、缩放变换
Canvas所有的绘图都在onPaint中进行,并且Canvas是透明的,默认没有背景色.
2023-09-11 23:38:52
38
原创 google c++线程、协程、任务调度marl库使用介绍
Marl 是一个 C++ 用于多线程并发和异步编程的库。Google 开发了 Marl,旨在为现代 CPU 提供高效的任务调度和同步。Marl 与其他线程库的主要区别在于它的任务调度器,该调度器可以动态地在可用的核心之间分配任务,而不需要为每个任务分配一个专用线程。这使得 Marl 可以在高并发下仍然具有高效性。
2023-09-06 23:31:44
86
原创 python类的属性和实例的属性有什么区别
注意:如果尝试通过实例修改类属性,实际上你可能会在该实例上创建一个新的实例属性,而不是修改类属性。这可能会导致意外的行为和混淆,所以通常建议不要这样做。在 Python 中,类属性和实例属性是两种不同类型的属性,它们在用途和作用域上有所不同。总的来说,类属性是共享的,而实例属性是独立的。理解这两者之间的区别对于避免在面向对象编程中出现常见的错误是很重要的。
2023-09-01 22:24:04
173
原创 python print格式化输出
前缀开始的字符串表示格式化字符串字面量,通常称为 “f-string”。从 Python 3.6 开始引入,它们是一种在字符串中嵌入表达式的新方法。这些表达式在运行时会被评估,然后使用。f-string 提供了一种简洁且可读性强的方式来嵌入和格式化字符串中的表达式。f-string 还支持各种复杂的表达式和格式化选项。是占位符,它们在运行时被。在 Python 中,以。将它们插入到字符串中。
2023-09-01 18:12:34
143
原创 docker的运行原理
这些技术组合在一起,使 Docker 在 Linux 内核上能够提供轻量级、快速、隔离的环境来运行应用程序。Docker 是一个开源的容器化技术,它能够让开发者将应用及其依赖打包到一个轻量级的、可移植的容器中,这个容器可以在几乎任何机器上一致地运行。: 容器是一个轻量级的、独立的、可执行的软件包,其中包括运行应用所需的一切:代码、运行时、系统工具、库和设置。: Docker 镜像是一个轻量级、独立的、可执行的软件包,包含运行应用的所有内容,包括代码、运行时、系统工具、库和设置。它是创建容器的基础。
2023-09-01 18:01:51
1151
原创 docker基本命令记录
Docker 是一个开源的容器技术,它允许开发人员将应用程序及其所有依赖项打包到一个容器中,然后轻松地在任何地方部署和运行。这只是 Docker 基本操作的摘要。Docker 提供了大量的命令和选项来管理容器、镜像、网络和数据卷。要深入了解,建议参考 Docker 的官方文档。
2023-09-01 17:56:28
980
原创 C++异常介绍与自定义异常
在C++中,自定义异常通常意味着定义一个新的异常类。这个类通常继承自标准库的异常类,例如。定义异常类:创建一个新的类,继承自或其他相关的异常类。提供异常消息:覆盖what()函数,这样当异常被捕获并处理时,可以提供一个描述性的错误消息。抛出自定义异常:在代码的适当位置使用throw关键字抛出自定义的异常。捕获自定义异常:使用try-catch语句块来捕获和处理异常。// 1. 定义异常类private:public:// 2. 提供异常消息try {// 某些条件触发异常。
2023-08-25 00:15:06
107
原创 C++ VS2022使用gRPC
在2022年前,gRPC是一个受欢迎的RPC框架,允许应用程序在不同的环境中进行通信。gRPC是基于Google的Protocol Buffers作为接口定义语言的,它支持多种编程语言,其中之一就是C++。(Microsoft推出的C++包管理器)来简化安装gRPC的过程。这是gRPC的核心部分,它描述了要执行的远程调用和这些调用所使用的数据结构。希望这些基本的步骤和建议能够帮助你在Visual Studio 2022中使用gRPC和C++。文件生成的源代码,你可以编写服务器和客户端的实现。
2023-08-24 10:33:59
238
原创 C++ Windows API IsDebuggerPresent的作用
当你在没有附加调试器的情况下运行此程序时,它将输出 “Debugger is not attached.”。例如,恶意软件可能使用这个函数来检测其自身是否被安全研究人员调试,如果是,则可能采取一些措施来干扰调试或直接结束执行。是 Windows API 中的一个函数,它用于检测当前运行的程序是否正在被调试。当程序被如 Visual Studio 这样的调试器附加时,此函数会返回。作为安全机制是不可靠的,因为经验丰富的逆向工程师知道如何绕过这样的检查。
2023-08-23 15:58:02
82
原创 PyQt PySide6 QMessageBox使用教程
是一个 Python 绑定到 Qt6 库的库,允许你在 Python 中创建 Qt6 应用程序。是一个提供模式对话框,用于显示消息、询问问题或获取简单的输入的类。还有许多其他功能和配置选项。你可以根据需要定制消息框的外观和行为。这只是一个基本介绍,
2023-08-22 20:45:19
272
1
原创 C++编译出现 error: C2872: “byte”: 不明确的符号
方法(2)在使用using namespace std;之前,添加#include <windows.h>我使用方法1可解决,就是在代码里不要使用using namespace std;在编译cpr库时,需要使用用C++ 17, 出现了编译错误。error: C2872: “byte”: 不明确的符号。方法(1)不使用using namespace std;
2023-08-22 14:57:03
53
原创 Qt编译出现error: C2338: Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known
如果有其它类型出现类似的错误,使用Q_DECLARE_METATYPE来声明即可。
2023-08-17 23:18:10
41
原创 C++ OpenSSL 3.0.8 AES加解密
如果使用OpenSSL 1.1.1 sdk编译则没有上述错误,使用3.0以上的openssl sdk就会报错,那是因为3.0的不兼容1.0的sdk。如果你想继续使用已弃用的函数,并且不想更改代码,可以考虑禁用特定的编译警告。在 Visual Studio 中,你可以使用。来禁用这个特定的警告。请注意,这并不是一个推荐的解决方案,因为它可能会掩盖潜在的问题。最佳的解决方案通常是更新你的代码,以使用新的API。这样可以确保你的代码与最新的库版本兼容,并且可以从新版本中获得的安全和性能改进中受益。
2023-08-17 22:23:51
790
原创 Linux POSIX C/C++线程API介绍与代码演示
Linux POSIX API(Application Programming Interface)是一组用于编写可移植的多线程、进程间通信、文件操作等系统级应用程序的标准接口。它遵循POSIX(Portable Operating System Interface for Unix)标准,POSIX是一组定义了操作系统接口的标准,旨在提高可移植性和互操作性。Linux POSIX API提供了许多函数和数据类型,用于创建和管理线程、进程间通信、文件操作、信号处理、互斥锁、条件变量等。
2023-08-10 22:17:35
225
原创 Linux C++ 网络编程基础(2) : TCP多线程一个server对应多个client
Linux POSIX线程库提供了一组函数来创建、管理和同步线程。:创建一个新的线程。return 0;:等待一个线程的结束。return 0;:初始化一个互斥锁。return 0;:初始化一个条件变量。return 0;
2023-08-10 21:48:47
1071
原创 VS2022编译OBS29.1之后的版本
执行cmake生成sln时, 会自动下载deps, 大概15分钟(需要有合理的网络环境, 不然部分依赖会下载失败) .在OBS 29.1之前, windows系统编译时需要手动下载deps依赖库文件, 具体可参考我的另一篇博客,4 双击生成的sln文件, x64在目录build_x64\obs-studio.sln。编译环境win11, vs2022, Qt5.15.2, 建议用Qt6.2 打开obs项目目录, 执行。
2023-08-07 21:34:31
254
原创 后端开发, 接口幂等性是什么意思
如果一个接口不是幂等的,那么重复执行同样的请求可能会导致不同的结果,甚至引发意外的行为。可以使用数据库或缓存来记录已处理的标识符。如果标识符已经存在于记录中,说明该请求已经被处理过,直接返回之前的处理结果即可,从而实现幂等性。处理完请求后,将新的资源状态与之前的状态进行对比,如果相同,则说明请求未改变资源状态,返回成功;在后续的相同请求到达时,先检查 Token 是否已经存在,如果存在,直接返回之前的处理结果,实现幂等性。在后端开发中,接口的幂等性是指同一个请求的多次执行所产生的效果与执行一次的效果相同。
2023-08-07 21:17:09
694
原创 C++网络编程Reactor模式介绍
但是,由于所有的事件都在一个线程中处理,如果某个事件处理时间过长,会阻塞其他事件的处理,因此在设计Handler时需要特别注意。Synchronous Event Demultiplexer:这是一个系统级别的组件,负责等待事件的发生。当事件发生时,它会通知Reactor。Handlers:这些是具体的事件处理器,它们定义了如何响应特定的事件。它会不断地检查是否有新的事件发生,如果有,就调用相应的事件处理器。Handler处理完事件后,返回控制权给Reactor,Reactor继续等待其他事件的发生。
2023-08-07 18:11:51
145
原创 http get、post、put
这个例子中,我们发送了一个POST请求到"/path",并且我们设置了HTTP头部字段"Content-Type"为"application/x-www-form-urlencoded",然后我们发送了两个字段"field1"和"field2"。与 GET 不同,POST 请求会把数据和请求一起发送,数据不会附在 URL 上,而是在请求的消息体中。PUT:PUT 方法用于向指定资源位置上传其最新内容,PUT 方法是幂等的,即无论调用一次还是多次,服务器上的结果都是一样的。PUT 方法通常用于更新资源。
2023-08-07 18:08:26
1513
原创 linux epoll介绍与代码演示
当有新的客户端连接时,它会接受这个连接,并将新的socket添加到epoll的监视列表中。epoll是为了解决这个问题而出现的。然后,它创建了一个epoll文件描述符,并将服务器的socket添加到epoll的监视列表中。poll是一种比较早的技术,它的工作方式是轮询所有的文件描述符,看哪些文件描述符准备好了I/O操作。这种方式的缺点是,当文件描述符的数量很大时,轮询的开销会很大。这只是一个非常基础的示例,实际的网络编程可能会涉及到更复杂的情况,比如处理客户端断开连接的情况,或者使用非阻塞IO等。
2023-08-07 17:42:25
407
原创 Linux C++网络编程基础(1):TCP服务端与客户端的实现
这两段代码分别实现了一个简单的服务器和客户端。服务器创建一个socket,绑定到一个特定的端口,并开始监听这个端口。当一个客户端连接到这个端口时,服务器接收客户端发送的消息,然后向客户端发送一个响应。在Linux环境下,我们可以使用socket编程来实现网络通信。下面是一个简单的C++版本的客户端和服务端的示例代码。这只是一个非常基础的示例,实际的网络编程可能会涉及到更复杂的情况,比如多线程或者非阻塞IO等。客户端创建一个socket,连接到服务器的特定端口,发送一个消息,然后等待服务器的响应。
2023-08-07 16:48:07
925
原创 C++内存序介绍与代码演示
例如,x86架构的CPU在硬件层面上为某些操作提供了较强的内存序保证,这可能意味着在这些平台上,某些内存序的操作可能没有额外的性能开销。std::memory_order_acq_rel:这是acquire和release的结合,既保证了在它之前的读或者写操作不会被重排序到它之后,也保证了在它之后的读或者写操作不会被重排序到它之前。总的来说,虽然C++内存序的语义在不同的操作系统上是一致的,但在实践中,由于底层硬件和编译器的差异,可能会有不同的性能表现和实现细节。
2023-08-07 16:39:02
86
原创 C++实现内存池
这个内存池使用一个vector来存储内存块,每个内存块的大小为blockSize。allocate函数会从freeList中取出一个内存块并返回,如果freeList为空,则会调用expandPool函数来扩展内存池。在示例中,我们使用内存池来分配和释放int类型的内存块。首先,我们分配一个内存块并将其赋值为42,然后再分配一个内存块并将其赋值为99。最后,我们释放这两个内存块。请注意,这只是一个简单的内存池实现示例,实际的内存池可能需要更复杂的管理和分配策略,以及对内存对齐和内存泄漏等问题的处理。
2023-08-07 16:21:27
65
Qt蓝牙串口源码支持十六进制发送、字符发送、定时发送
2022-02-22
c++ PImpl实现机制
2021-09-15
很全的 Qt qss
2020-09-29
jsoncpp_sdk_x64.rar
2020-04-06
支持向量机通俗导论(理解SVM的三层境界)PDF
2018-04-13
C# TCP网络通信示例:多人聊天发文件
2018-04-02
C++/OpenCV2.4.9 数字精确识别源码
2017-11-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人