Update 更新文档

This commit is contained in:
2026-02-25 23:01:42 +08:00
parent 40aff32fb0
commit 80518309a7
679 changed files with 4611263 additions and 0 deletions

View File

@@ -0,0 +1,164 @@
# 独立开发软件使用 C++ 标准库与 Qt 接口的说明
## 一、核心结论:完全允许且推荐使用
独立开发的软件(如 QTradeProgram 大单检测程序)**完全可以合法使用 C++ 标准库和 Qt 接口**,二者均符合独立开发场景的授权要求、技术适配性及软件著作权登记规范,具体依据如下:
| 工具 / 库 | 授权类型 | 独立开发使用权限 | 著作权登记要求 |
| --------- | ------------------------ | --------------------------- | --------------- |
| C++ 标准库 | 开源(随编译器自带) | 无授权费用,可自由用于商业 / 非商业软件 | 无需额外声明,视为开发基础工具 |
| Qt 接口(框架) | 双授权GPLv3/LGPLv3 + 商业授权) | 非商业用途可免费使用开源授权版;商业用途需购买商业授权 | 需在材料中注明授权类型及版本 |
## 二、C++ 标准库的使用说明
### 2.1 合法使用依据
C++ 标准库(如 C++11/14/17 标准中的`std::vector``std::mutex``std::thread`等)是 C++ 语言的官方配套库,随编译器(如 GCC、Clang、MSVC默认提供其授权协议如 GPL、MIT 变体)明确允许:
* 独立开发者无需申请授权,可直接在软件中调用标准库组件;
* 无论是非商业软件(如个人工具)还是商业软件(如面向企业的监控系统),均无使用限制;
* 无需向第三方支付费用,也无需公开自身软件的源代码(除非软件整体采用 GPL 等强开源协议)。
### 2.2 技术适配优势
在 QTradeProgram 这类独立开发软件中C++ 标准库是核心基础工具,典型使用场景及优势包括:
* **数据存储**:用`std::vector`存储订单数据、`std::map`管理股票阈值配置,兼顾性能与易用性;
* **线程安全**:通过`std::mutex``std::lock_guard`实现多线程数据同步(如订单处理模块的缓存操作),避免自定义锁逻辑的漏洞;
* **内存管理**:用`std::shared_ptr``std::unique_ptr`管理动态对象(如`BigOrderInfo`实例),减少内存泄漏风险;
* **算法支持**:借助`std::sort``std::find`等标准算法处理大单数据排序、去重,提升开发效率。
### 2.3 著作权登记注意事项
使用 C++ 标准库时,无需在软件著作权申请材料中额外说明,原因如下:
* C++ 标准库属于 “开发基础工具”,类似编译器、操作系统 API不被视为 “第三方依赖组件”;
* 著作权审查关注的是**软件自身的原创代码**如大单检测算法、UI 交互逻辑),而非基础库的调用;
* 仅需确保自身代码中对标准库的调用逻辑正确(如`std::thread`的线程回收、`std::vector`的越界防护),避免因调用不当导致的功能异常。
## 三、Qt 接口(框架)的使用说明
Qt 是独立开发 GUI 软件(如 QTradeProgram 的可视化监控界面)的常用框架,其使用需关注授权类型,但独立开发场景下完全可控,具体说明如下:
### 3.1 授权类型选择:匹配独立开发需求
Qt 提供两种核心授权方式,独立开发者可根据软件用途选择,均不影响独立开发属性:
#### 3.1.1 开源授权GPLv3/LGPLv3免费
* **适用场景**:非商业软件(如个人使用的监控工具、开源项目);
* **使用权限**
1. 可自由调用 Qt 的所有接口(如`QMainWindow``QThreadPool``QtConcurrent`),实现界面、多线程、网络通信等功能;
2. 无需支付授权费用,但需遵守开源协议:若软件基于 GPLv3 授权的 Qt 开发,软件自身也需开源(公开源代码);若基于 LGPLv3 授权的 Qt 开发,仅需公开与 Qt 交互的接口代码,核心逻辑(如大单检测算法)可闭源。
* **典型使用**QTradeProgram 的 UI 模块(`QMainwindow`)、呼吸灯控件(`QBreathingLight`)、信号槽通信,均基于 Qt 开源版接口开发,完全符合授权要求。
#### 3.1.2 商业授权(付费)
* **适用场景**:商业软件(如向企业销售的股票监控系统);
* **使用权限**
1. 获得 Qt 官方商业授权后,可完全闭源开发,无需公开任何代码;
2. 可享受 Qt 官方技术支持,适合需要稳定性保障的商业场景;
* **成本参考**:独立开发者可申请 “小型商业授权”,年费通常在数千元级别(具体以 Qt 官网最新报价为准),远低于自研 GUI 框架的成本。
### 3.2 独立开发中的技术适配要点
Qt 接口与 C++ 标准库兼容性极强,在独立开发中可协同使用,典型适配场景包括:
* **界面与逻辑分离**:用 Qt 的`QMainWindow``QWidget`实现可视化界面,核心业务逻辑(如订单处理、大单检测)基于 C++ 标准库开发,通过 Qt 信号槽机制实现跨模块通信(如`QOrderProcessor``QBigOrderViewer`推送大单数据);
* **多线程协同**Qt 的`QThreadPool`与 C++ 标准库的`std::thread`可互补使用Qt 线程池适合管理 UI 相关的轻量任务(如界面刷新),标准库线程适合处理 CPU 密集型任务(如海量订单数据解析);
* **数据格式转换**Qt 的`QString`与标准库的`std::string`可通过`toStdString()`/`QString::fromStdString()`无缝转换,避免字符编码问题(如股票名称、日志内容的存储与展示)。
### 3.3 软件著作权登记的关键要求
使用 Qt 接口时,需在著作权申请材料中补充 \*\*“第三方依赖声明”\*\*,避免审查疑问,具体操作如下:
1. **声明位置**:在软件设计说明书的 “技术特点” 章节或源代码文档的 “依赖说明” 部分添加;
2. **声明内容模板**
```
第三方依赖声明:
本软件使用Qt 5.9框架开发授权类型为LGPLv3开源授权非商业用途具体使用的Qt接口包括
\- GUI组件QMainWindow、QWidget、QTableView用于实现可视化监控界面
\- 多线程组件QThreadPool、QtConcurrent用于订单数据异步处理
\- 信号槽机制QObject、signals/slots用于模块间通信
本软件已遵守LGPLv3协议要求公开与Qt交互的接口代码路径./QMainwindow/、./Sqbase/),核心业务逻辑(如大单检测算法)保留闭源权利。
```
1. **材料附件**:无需提交 Qt 的源代码或授权文件,仅需在声明中注明 Qt 版本(如 5.9)及授权类型,审查机构认可其公开授权的合法性。
## 四、独立开发的额外注意事项
### 4.1 避免 “依赖侵权” 的核心原则
无论使用 C++ 标准库还是 Qt 接口,独立开发需遵守 “**仅调用公开接口,不修改底层源码**” 的原则:
* 禁止破解、反编译 Qt 框架或修改 C++ 标准库的实现代码(如篡改`std::mutex`的锁逻辑),否则可能违反授权协议;
* 若需扩展 Qt 功能(如自定义控件`QBreathingLight`),需基于 Qt 的公开扩展接口开发(如继承`QWidget`重写`paintEvent`),而非修改 Qt 源码。
### 4.2 著作权归属的明确性
使用 C++ 标准库和 Qt 接口不会影响软件的著作权归属:
* 独立开发者对软件的**原创部分**(如大单检测算法、自定义 UI 交互逻辑、数据处理流程)拥有完整著作权;
* C++ 标准库和 Qt 接口仅为 “开发工具”其自身的著作权归属于编译器厂商如微软、GCC或 Qt 公司,与独立开发软件的著作权相互独立,无归属冲突。
### 4.3 版本一致性保障
提交软件著作权材料时,需确保 Qt 版本与代码中的调用逻辑一致:
* 若代码中使用 Qt 5.9 的`QtConcurrent::run`接口,需在材料中明确标注 “Qt 5.9”,避免因版本 mismatch 导致审查疑问;
* 建议在`README.md`或 “编译配置说明” 中记录 Qt 版本及依赖的具体模块(如`qt5-widgets``qt5-concurrent`),便于审查机构验证代码可运行性。
> (注:文档部分内容可能由 AI 生成)