当前位置: 首页 > news >正文

用 QT 开发软件会吃官司吗?

之前我写过我们现在使用 QT 开发跨平台软件,有朋友留言,QT 虽好,当心收到律师函。今天就来聊聊这个话题。

在开始这个话题之前,我们先把使用盗版 QT 排除在外,只讨论在合法且遵从版权协议的前提下,能否使用 QT 开发商业软件。

首先我们要弄清楚 QT 是分商业版和开源版的。使用商业版没什么好讨论的,既然付过费了,当然可以开发商业软件,也不需要开源。大部分个体开发者和创业公司都是选择的 QT 开源版,所以本文讨论的是使用 QT 开源版开发和销售商业软件是否可行(闭源)。

很多人认为使用开源软件就必须开源,这是早期 GPL 协议产生的刻板印象。其实开源运动在发展过程中,又产生了很多新的开源协议,比如 BSD、MIT、Apache 等等。因为大家发现 GPL 协议并不利于开源软件的发展。

像BSD、Apache 这类的开源协议,限定相当宽松,不仅可以商用,修改了源码也不用公开,可以说基本无限制。

LGPL 的限制稍微多一点,但对商业软件开发还比较友好。

LGPL,即GNU宽通用公共许可证,是一种自由软件许可证,它允许商业软件通过动态链接的方式使用 LGPL 类库而不需要开源商业软件的代码。

重点:采用 LGPL 协议的开源代码可以被商业软件作为类库引用并发布和销售。

当然,如果你修改了 LGPL 协议的代码或者衍生了新的代码,就必须按照 LGPL 协议公开源代码。

因此,使用 LGPL 协议的软件不一定必须开源,这取决于你是否修改或者衍生了该软件。如果你只是使用而没有修改该软件,就可以随意使用和销售,而不需要开源你的软件。

咱们再来看看开源版 QT 的版权协议。QT 因为产品众多,并没有采用单一的协议,而是采用了混合版权协议。有的产品采用 GPL,有的产品采用 LGPL 协议,甚至 QT 的开发库的不同模块还采用了不同的版权协议。大家可以去下面的网站去查询:

https://www.qt.io/product/features

下面给张图:

d7aeda75febd4cf518132660cea123bc.png

可以看到,QT 的核心库,都是采用 LGPL 协议的。再来看看附加库:

bc7df1ffc09b7733eb94048a76a3fba0.png

大部分都是使用 LGPL 协议的。

QT 核心库,加上这些常用的附加组件库,对于大部分开发足够了。至于修改 QT 组件源码,我想大部分开发者没这么厉害吧。我们需要注意的是,不要为了省事,把 QT 动态库一股脑打包到应用程序安装包中。只打包自己用到的组件,一来减少法律风险,二来也可以减少安装包的大小。

如果你收到了 QT 公司的律师函,首先要恭喜你,说明你做的产品至少小有名气,也有不错的盈利,一般来说,无名小卒人家都懒得理你。如果真收到了,也不用慌,先分析一下是否真的违反开源协议。即使真的有问题,购买商业版就解决问题。

最后,延伸一个话题,使用开源软件盈利是否道德。在国内,经常有开发者嘲讽,某某软件只是在开源软件上套个壳,就向用户收费,简直厚颜无耻至极。很多国产软件也被骂的很惨,xxx 浏览器就是套个壳,xxx 操作系统就是套个壳。

这个就需要具体情况具体分析,要看开源协议是怎么定的。像 Chromium、Android,其实采用的都是非常宽松的授权协议,售卖、修改、闭源都没问题。连微软这么大的公司,和谷歌又是竞争对手,其 Edge 浏览器不是一样选择了 Chromium 内核,也没开源,人家 Google 还高兴得很呢。

另外,基于开源软件套个壳,甚至简单打个包,那也是付出了劳动,拿出去售卖,只要不违反开源协议,也没问题。你要是觉得简单,你去做一下试试,看看是不是那么简单。

各种开源协议,都是法律术语,写得又臭又长,一般人没耐心看,也看不懂。以上只是我收集网上的一些资料,也咨询了 GPT,得出的一点看法。我不是专业人士,不能保证上述的分析一定准确无误。如果你真的担心,还是咨询专业的法律人员。

相关文章:

用 QT 开发软件会吃官司吗?

之前我写过我们现在使用 QT 开发跨平台软件,有朋友留言,QT 虽好,当心收到律师函。今天就来聊聊这个话题。 在开始这个话题之前,我们先把使用盗版 QT 排除在外,只讨论在合法且遵从版权协议的前提下,能否使用…...

远程运维用什么软件?可以保障更安全?

远程运维顾名思义就是通过远程的方式IT设备等运行、维护。远程运维适用场景包含因疫情居家办公,包含放假期间出现运维故障远程解决,包含项目太远需要远程操作等等。但远程运维过程存在一定风险,安全性无法保障,所以一定要选择靠谱…...

数据结构与算法C语言版学习笔记(2)-线性表、顺序存储结构的线性表

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 数据结构部分的知识框架一、线性表的定义和特点1.定义2.特点 二、线性表的实际案例引入1.案例一:多项式的加减乘除2.案例二:当多项式是稀疏多…...

【vite】vite.defineConfig is not a function/npm无法安装第三方包问题

当使用vite命令 npm init vite-app 项目名称时配置 import vue from vitejs/plugin-vueexport default defineConfig({plugins: [vue()] })会报错vite.defineConfig is not a function 还有就是npm下载的时候也会报错 原因vite插件vitejs/plugin-vue和vite版本问题 解决 调…...

234. 回文链表 --力扣 --JAVA

题目 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 解题思路 判断链表是否为回文链表取决于链表中各个节点的值,所以可以通过存储各节点的值进行对比判断&…...

【JAVA学习笔记】65 - 文件类,IO流--节点流、处理流、对象流、转换流、打印流

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter19/src/com/yinhai 文件 一、文件,流 文件,对我们并不陌生,文件是保存数据的地方,比如大家经常使用的word文档,txt文件,excel文件..都是文件。它既可以保存一张图片…...

R语言 复习 习题图片

这是日天土申哥不知道从哪淘来的R语言复习知识点图片,大部分内容都是课后习题的答案 加油吧,骚年,考个好分数...

c语言 结构体 简单实例

结构体 简单例子 要求&#xff1a; 结构体保存学生信息操作 代码 #include <stdio.h>//定义结构体 struct student{int ID;char name[20];char sex;char birthday[8];int grade; };int main(){int number;printf("请输入学生个数&#xff1a;");scanf(&quo…...

【ChatGPT】ChatGPT的自定义指令

ChatGPT的自定义指令 关于ChatGPT自定义指令的常见问题解答概述可用性如何使用您的数据自定义指令设置将应用于所有新聊天。启动新聊天可查看更改iOS & AndroidWeb 示例常见问题使用自定义指令的好处字符限制我的ChatGPT数据导出中是否包含自定义指令&#xff1f;当我删除我…...

《哥德尔、艾舍尔、巴赫——集异璧之大成》阅读笔记1

1、谁也不知道非智能行为和智能行为之间的界限在哪里。事实上&#xff0c;认为存在明显界限也许是愚蠢的。但是智能的基本能力还是确定的&#xff0c;它们是&#xff1a; 对于情境有很灵活的反应充分利用机遇弄懂含糊不清或彼此矛盾的信息认识到一个情境中什么是重要的因素&am…...

稳定细胞系构建技术介绍

抗体药物的开发是一个非常复杂的过程&#xff0c;构建适用于工业生产的高表达的稳定细胞株是抗体药工艺开发的起点和基础。一株稳定高产的工程细胞株不仅能显著增加单位体积产量&#xff0c;降低生产成本&#xff0c;还可以降低下游纯化工艺复杂度&#xff0c;确保获得安全&…...

k8s部署srs服务

k8s部署srs服务 项目需要把srs纳入k8s进行管理&#xff0c;需要通过k8s来部署srs服务然后原本的srs可以支持rtmp与webrtc两种&#xff0c;官网查了部署方式&#xff0c;k8s只有最基本的部署方式于是开始研究k8s部署能够正常推拉流的webrtc版本的srs 首先肯定是去官网查有无相关…...

使用Java分割PDF文件

在Java中&#xff0c;我们可以使用iText库来处理PDF文件。iText是一个流行的Java库&#xff0c;用于创建和处理PDF文件。在本篇博客中&#xff0c;我们将介绍如何使用Java分割一个PDF文件为多个小的PDF文件。 1. 引入iText依赖 首先&#xff0c;我们需要在项目中引入iText库的…...

LLM时代中的分布式AI

深度学习相较传统机器学习模型&#xff0c;对算力有更高的要求。尤其是随着深度学习的飞速发展&#xff0c;模型体量也不断增长。于是&#xff0c;前几年&#xff0c;我们看到了芯片行业的百家争鸣和性能指标的快速提升。正当大家觉得算力问题已经得到较大程度的缓解时&#xf…...

Zinx框架-游戏服务器开发003:架构搭建-需求分析及TCP通信方式的实现

文章目录 1 项目总体架构2 项目需求2.1 服务器职责2.2 消息的格式和定义 3 基于Tcp连接的通信方式3.1 通道层实现GameChannel类3.1.1 TcpChannel类3.1.2 Tcp工厂类3.1.3 创建主函数&#xff0c;添加Tcp的监听套接字3.1.4 代码测试 3.2 协议层与消息类3.2.1 消息的定义3.2.2 消息…...

如何使用Pyarmor保护你的Python脚本

目录 一、Pyarmor简介 二、使用Pyarmor保护Python脚本 1、安装Pyarmor 2、创建Pyarmor项目 3、添加Python脚本 4、配置执行环境 5、生成保护后的脚本 三、注意事项与未来发展 四、未来发展 五、总结 本文深入探讨了如何使用Pyarmor工具保护Python脚本。Pyarmor是一个…...

【c++】搜索二叉树的模拟实现

搜索二叉树的模拟实现 k模型完整代码 #pragma once namespace hqj1 {template<class K>struct SBTreeNode{public://这里直接用匿名对象作为缺省参数SBTreeNode(const K& key K()):_key(key), _cleft(nullptr), _cright(nullptr){}public:K _key;SBTreeNode* _cle…...

Kubeadm - K8S1.20 - 高可用集群部署(博客)

这里写目录标题 Kubeadm - K8S1.20 - 高可用集群部署一.环境准备1.系统设置 二.所有节点安装docker三.所有节点安装kubeadm&#xff0c;kubelet和kubectl1.定义kubernetes源2.高可用组件安装、配置 四.部署K8S集群五.问题解决1.加入集群的 Token 过期2.master节点 无法部署非系…...

515. 在每个树行中找最大值

描述 : 给定一棵二叉树的根节点 root &#xff0c;请找出该二叉树中每一层的最大值。 题目 : LeetCode 在每个树行中找最大值 : 515. 在每个树行中找最大值 分析 : 这里其实就是在得到一层之后使用一个变量来记录当前得到的最大值 , 懂了前面的几道这就是小菜 解析 : /…...

基于springboot+vue的图书馆管理系统

图书馆管理系统 springboot32阿博图书馆管理系统 源码合集&#xff1a; www.yuque.com/mick-hanyi/javaweb 源码下载&#xff1a;博主私 摘 要 随着社会的发展&#xff0c;计算机的优势和普及使得阿博图书馆管理系统的开发成为必需。阿博图书馆管理系统主要是借助计算机&…...

猫抓资源嗅探扩展:网页媒体资源提取的完整解决方案

猫抓资源嗅探扩展&#xff1a;网页媒体资源提取的完整解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在现代互联网浏览体验中&#xff0c…...

Unity游戏翻译解决方案:多框架适配与实时翻译优化应用指南

Unity游戏翻译解决方案&#xff1a;多框架适配与实时翻译优化应用指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator Unity游戏翻译技术正成为全球化游戏开发的关键环节&#xff0c;XUnity.AutoTranslat…...

MOSFET栅极电阻选型实战:从波形分析到最佳阻值确定(附IRF540实测数据)

MOSFET栅极电阻选型实战&#xff1a;从波形分析到最佳阻值确定&#xff08;附IRF540实测数据&#xff09; 在电力电子设计中&#xff0c;MOSFET的栅极电阻选型往往被工程师视为"小问题"&#xff0c;但实际调试中却可能成为影响系统稳定性的关键因素。记得去年参与一款…...

1990-2025年企业基金退出事件数据

数据介绍 企业投资机构通过公开招募&#xff0c;并购&#xff0c;同行转售等退出方式转让基金份额、底层项目股权、IPO、回购、清算等方式&#xff0c;从所投基金或项目中收回资金、实现收益或止损离场的完整交易与流程。 数据整理1990至2025年企业基金退出事件数据&#xff…...

Qwen3-ForcedAligner-0.6B完整指南:音频格式支持/实时录音/时间戳导出全解析

Qwen3-ForcedAligner-0.6B完整指南&#xff1a;音频格式支持/实时录音/时间戳导出全解析 你是不是也遇到过这样的烦恼&#xff1f;开会录音想整理成文字&#xff0c;手动打字累到怀疑人生&#xff1b;做视频需要加字幕&#xff0c;一句一句对时间轴对到眼花。今天要介绍的这个…...

Janus-Pro-7B播客制作:音频波形图识别+内容摘要与章节标记生成

Janus-Pro-7B播客制作&#xff1a;音频波形图识别内容摘要与章节标记生成 1. 引言&#xff1a;播客制作的新思路 播客制作通常需要大量的人工工作&#xff1a;听完整期节目、标记关键章节、撰写内容摘要、制作时间轴标记。这个过程耗时耗力&#xff0c;特别是对于长篇播客内容…...

OpenClaw性能优化:Phi-3-mini-128k-instruct长文本处理的缓存策略

OpenClaw性能优化&#xff1a;Phi-3-mini-128k-instruct长文本处理的缓存策略 1. 问题背景&#xff1a;长文本处理的性能瓶颈 最近在尝试用OpenClawPhi-3-mini处理公司100多页的技术文档时&#xff0c;遇到了严重的性能问题。每当需要对文档进行多轮分析或批量处理时&#xf…...

图文对话AI快速部署:Qwen3-VL-WEBUI Docker实战教程

图文对话AI快速部署&#xff1a;Qwen3-VL-WEBUI Docker实战教程 1. 认识Qwen3-VL-WEBUI 1.1 什么是Qwen3-VL-WEBUI&#xff1f; Qwen3-VL-WEBUI是一个基于Docker的图文对话AI解决方案&#xff0c;它将强大的Qwen3-VL视觉语言模型封装成易于使用的网页界面。通过这个工具&…...

告别回调地狱:PromiseKit函数式三剑客拯救异步代码

告别回调地狱&#xff1a;PromiseKit函数式三剑客拯救异步代码 【免费下载链接】PromiseKit Promises for Swift & ObjC. 项目地址: https://gitcode.com/gh_mirrors/pr/PromiseKit PromiseKit 是 Swift 和 Objective-C 开发者的异步编程救星&#xff0c;它通过优雅…...

OpenClaw任务链设计:千问3.5-35B-A3B-FP8复杂流程自动化

OpenClaw任务链设计&#xff1a;千问3.5-35B-A3B-FP8复杂流程自动化 1. 为什么需要任务链自动化 上周我遇到一个典型的工作场景&#xff1a;需要从20份PDF报告中提取关键数据&#xff0c;整理成Excel表格&#xff0c;再根据这些数据生成分析图表&#xff0c;最后通过邮件发送…...