QT收费吗?

Qt:开源与商业版区别,以及LGPL和闭源程序 本文将详细介绍Qt的开源版本和商业版本的区别,以及两种许可证——LGPL和闭源程序。LGPL许可证允许用户在自己的应用程序中使用Qt库,并且不需要公开应用程序的源代码。但是,如果修改了Qt库中的代码,则必须公开这些修改的源代码。LGPL许可证允许用户在自己的应用程序中使用Qt库,并且不需要公开应用程序的源代码。以上是Qt的开源版本与商业版的区别,以及LGPL和闭源程序的介绍。商业许可证允许用户在Qt库的基础上开发闭源软件,不需要公开任何源代码或修改的源代码。开源版使用LGPL许可证,商业版使用商业许可证。 阅读详情

关于Qt的三种协议以及是否收费,有以下引文:

引文一:

    最近一直在学习 Qt。Qt 有两个许可证:LGPL 和商业协议。这两个协议在现在的 Qt 版本中的代码是完全一致的(潜在含义是,Qt 的早期版本,商业版的 Qt 通常包含有一些开源版本所没有的库,比如 QtSingleApplication 这个库)。所以现在对于普通开发人员和部分商业公司来说,使用 LGPL 版本的 Qt 可以节省很大的开销。这两个版本最大的区别在于,前者是免费的,后者是收费的。既然代码都是一致的,所以费用就要是用来购买 Qt 的售后服务和培训等等相关服务。

    现在我们是来说一下版权的问题。LGPL 是一个开源协议,因此,有人会担心 LGPL 能否用于开发闭源程序,能够拿来卖钱。尽管现在国内有些公司不是很重视这方面的问题,不过,如果你违反了协议,某一天被别人发来一纸律师函的时候,真的是欲哭无泪了哦。所以,我们还是先来研究一下这个协议,LGPL 究竟能不能用于开发闭源程序。

    以下内容是我查找了 N 多网站总结出来的,因为豆子不是律师,所以 LGPL 协议基本看不懂。究竟怎样去理解这个协议,还是希望能够有专业人士说出来。这里就算做是一种抛砖引玉吧!尽管没有十分的确定,但是这里所说的理解基本也是八九不离十的了。

    至于什么是 LGPL 协议,这里就不再多说了,我们关心的是,如果使用 LGPL 协议开发商业程序。请注意,这里所说的闭源程序,是指不以某种形式开放源代码,也就是说,用户(包括其他开发者)不能获取其源代码的程序。首先说明一点,LGPL协议是一个商业友好的协议。这里的含义是,你可以用 LGPL协议开发商业程序,当然也可以是非商业的闭源程序。但是,它是有一些限制的。这就是我们要讨论的重点。

    既然我们已经对其定性,那么我们直接进入主题:使用 LGPL 协议开发闭源程序,如果你使用动态链接的形式,那么,你可以以任何形式发布你的应用程序,商业的、非商业的、开源的、非开源的,随你。如果你因某种原因必须静态链接一个基于 LGPL 协议发布的库(一下我们简称为 LGPL 库),那么,你有义务进行下面的工作:

1.你必须在你的文档中说明,你的程序中使用了 LGPL 库,并且说明这个库是基于 LGPL 发布的;
2.你必须在你的应用程序发布中包含一份 LGPL协议,通常就是那个文本文件;
3.你必须开放使用了 LGPL 库代码的所有代码,例如某些封装器。但是,其他使用这些封装器的代码就不需要开放了;
4.你必须包含你的应用程序的余下部分的目标文件(通常就是我们所说的 .o 等等),或者是其他等价的文件。源代码并不是必须的。

    是不是很难理解呢?我们详细的说一下。

    第一条很容易理解;第二条也很容易理解,你可以在这里找到 LGPL 协议的内容,复制下来随你的程序一起发布就可以了。第三条就不那么好理解了。简单来说,LGPL协议要求,如果你的类使用了LGPL库的代码,那么必须把这个类开源。例如,如果你的程序 app.exe 每个源文件都使用了 LGPL 库的代码,那么你的所有源代码都要开源。为了避免这种情况,我们通常编写一个封装器,把 LGPL库的代码封装起来,这样就只需要开放这个封装器的代码,而其他使用了这个封装器的代码就不需要开放。第四条是对第三条的一种补充:那些使用了封装器的程序不需要开源,但是你必须把你编译的那些中间文件开放出来,Windows 下就是那些 .o 文件。

    你很奇怪,为什么 LGPL协议要这样规定呢?LGPL 所做的工作是,它保证了用户能够有这样一种能力:修改你使用 LGPL 库函数的方式(那些封装器就是你使用 LGPL库的方式,那些已经开源了),重新编译这些代码,然后重新对程序进行连接(连接所需要的目标文件也是包含了的,这是第四条规定的),就可以得到一个新的可执行程序。

    好了,如果你还不明白如何使用,我们来看一个例子。

    假设我们使用一个名为 Lib 的库,这个库是基于 LGPL协议发布的。如果你使用 Lib.dll 做动态链接(Windows 下),好,一切 OK。无论你的程序怎么样,你都可以做你所做的事情。

    我们主要是来看,如果你要使用静态链接,那么你需要如何组织你的代码。如果你有一个 main.cpp(我们假设所有 Lib 库的函数都是用了 lib_ 前缀):

// main.cpp int main()

{    

    lib_init();    

    lib_do_something();    

    lib_done();    

    lib_close();     

    return 0; 

} 

    现在你已经完成了 main.cpp,但是你必须把它开源!因为它使用了 LGPL 库的代码。这是上面第三条规定的。我不想把它开源,怎么办呢?好,我们建一个新的文件 lib_wrapper.cpp:

void my_lib_init() 

{

    lib_init();

} 

void my_lib_do_something()

{    

    lib_do_something();

} 

void my_lib_done() {

    lib_done(); 

} 

void my_lib_close()

{    

    lib_close(); 

} 

在 main.cpp 中,我们做相应的修改:

int main()

{    

    my_lib_init();    

    my_lib_do_something();    

    my_lib_done();    

    my_lib_close();     

    return 0; 

} 

现在,main.cpp 不再是直接使用了 LGPL 库的代码了,因此它不需要开源,而我们的封装器 lib_wrapper.cpp 必须开源。

好,编译一下我们的程序,你会得到 main.o(Windows 下)这个目标文件。

在最终程序的发布中,你需要包含一下文件:

1.一份文档,其中声明:这个程序使用了 Lib库,这个库是基于 LGPL 协议发布的;

2.LGPL.txt;

3.lib_wrapper.cpp;

4.main.o

这样,用户可以通过修改 lib_wrapper.cpp  的内容改变你使用 LGPL 库的方式,例如:

void my_lib_done() 

{    

    lib_done();    

    lib_close();

} 

void my_lib_close()

{    

    // lib_close(); 

} 

然后编译这个 lib_wrapper.cpp,最终重新链接。一个新的可执行程序诞生啦!


引文二:

    Qt 4.5中提供了三种授权协议,分别是GPL, LGPL和Commercial,可能很多人要问,为什么同样的一个产品要提供三种授权协议,什么情况下使用什么的样的授权协议最合适?在这里我就大致解释一下:

    GPL全称是The GNU General Public License,是目前大多数的GNU程序和超过半数的自由软件使用的许可协议。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免 费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。
GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题, 还可以享受免费的优势。

    回到LGPL,LGPL的全称是 GNU Lesser General Public License,GNU 较宽松公共许可证,也是由协议是由自由软体基金会发布的许可证,是一个主要为类库使用设计的开源协议,和GPL要求任何使用/修改/衍生之GPL类库的的 软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的 开源代码可以被商业软件作为类库引用并发布和销售。

    除了GPL和LGPL两种开源协议之外,Qt还提供了Commercial商业协议,Qt的商业协议是由Nokia定义的,由Nokia和购买方签 订的,具有法律效应的Qt产品授权协议。 Commercial License相教与GPL和LGPL,对于商业客户提供了更多的灵活性,客户可以任意的修改Qt的源代码,开发商业软件,而不需要公开任何源代码。并 且,在Commercial License中,我们还提供了技术支持服务。当然,商业授权协议是需要费用的。

    到底什么时候需要选择GPL和LGPL呢?一个最显而易见的理由就是他们都是免费的,使用LGPL和GPL版本的Qt是不需要支付任何费用的,当然 我们也相应的不会提供技术支持。如果你打算开发真正的开源软件,并希望使用者也可以保持开源,那么GPL是更好的选择,因为所有人,不论你自己还是将来基 于你的代码进行再次开发都必须开源。如果你打算开发闭源(不开放源代码)的商业软件,那么LGPL则更适合,但必须满足下面两个条件:
1. 你的应用程序应该动态链接Qt函数库,并使你的应用程序与未做修改的LGPL库分开发布。同时必须确保使用者(接受者)知道应用程序使用了LGPL版本的Qt;
2. 如果你对LGPL版本的Qt进行了任何修改,并发布,则必须遵循LGPL 条款发布。任何使用者有权利得到这些修改(通常情况下是源代码),并且确保使用者可以通过这些修改自己生成相应你修改过的Qt版本。

    相信到这里大家已经对Qt提供的这三种协议有了基本的了解,通常大家还会有一个疑问,就是基于这三种授权协议的Qt产品到底由多少功能上的区别,是 不是商业版本的会更完整,性能更好一些?这里我可以负责任的说:99%的代码都是一样的,无论是GPL, LGPL还是Commercial,功能,性能都没有区别,唯一的区别就在于授权协议的不同。

    还有一点需要说明的就是,由于LGPL是在Qt4.5这个版本里面才引入的,所以之前的Qt版本,4.4或者3.x的版本,并不提供LGPL协议,是不可逆的。同时未来发布的Qt版本,就一直会提供三种不同的授权协议版本。

    下面有一些链接,有兴趣想深入了解这些授权协议的同学,可以学习学习

GPL协议原文 - http://www.gnu.org/copyleft/gpl.html
GPL协议中文译文 - http://bergwolf.googlepages.com/gplv3_zh
LGPL协议原文 - http://www.gnu.org/copyleft/lesser.html
LGPL协议中文译文 - http://www.thebigfly.com/gnu/lgpl/lgpl-v3.php
58种不同的开源协议 - http://www.fsf.org/licensing/licenses/
什么是动态链接 - http://zh.wikipedia.org/wiki/%E5%8A%A8%E6%80%81%E9%93%BE%E6%8E%A5%E5%BA%93
官方声明 - http://www.qtsoftware.com/about/news/lgpl-license-option-added-to-qt
官方Q&A - http://www.qtsoftware.com/about/licensing/frequently-asked-questions

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/changsheng230/archive/2010/07/24/5761519.aspx


Qt的开源版本与商业版区别及LGPL与闭源程序 Qt是一个跨平台的应用程序开发框架,提供了丰富的工具和库,使开发者能够轻松地创建高质量的应用程序。开源版本使用GPL或LGPL许可证发布,可以免费使用、修改和分发Qt的源代码,而商业版需要购买授权,提供额外功能和专业支持。对于使用LGPL版本的Qt开发闭源程序,您需要满足LGPL许可证的要求,包括对库的修改进行公开。在上面的示例中,我们使用了LGPL版本的Qt库来创建一个简单的窗口应用程序。注意,虽然我们使用了LGPL版本的Qt库,但我们没有修改Qt库本身,因此无需公开源代码。 阅读详情

相关推荐

LGPL协议下的Qt是否允许用于开发商业软件?

但是,如果您对Qt库进行了修改并决定将修改后的库作为独立库分发,您需要遵循LGPL许可证的要求。LGPL是一种自由软件许可证,允许开发者将LGPL许可的库(例如Qt)链接到自己的应用程序中,而不需要公开应用程序的源代码。修改的库:如果您对Qt库进行了修改,您需要在修改的库的源代码中提供这些修改的部分。公开修改的库:如果您决定将修改后的Qt库作为独立库进行分发,您需要遵循LGPL许可证的要求,即在分发的库的源代码中包含修改的部分,并遵守LGPL许可证的规定。LGPL协议下的Qt是否允许用于开发商业软件?

2301_79366106的博客 2090

Qt收费吗?

关于Qt的三种协议以及是否收费,有以下引文: 引文一:     最近一直在学习 Qt。Qt 有两个许可证:LGPL 和商业协议。这两个协议在现在的 Qt 版本中的代码是完全一致的(潜在含义是,Qt 的早期版本,商业版的 Qt 通常包含有一些开源版本所没有的库,比如 QtSingleApplication 这个库)。所以现在对于普通开发人员和部分商业公司来说,使用 LGPL 版本的 Qt

2万+

基于 Qt C++ 开发一套医美收费系统

execSql("INSERT OR IGNORE INTO aesthetic_project (projectCode, projectName, type, originalPrice, discountPrice, department) VALUES ('TC001', '嫩肤补水套餐', 1, 1980, 1680, '皮肤科')");m_cartModel->setHorizontalHeaderLabels({"项目ID", "项目名称", "数量", "单价", "总价"});

寒寒豆豆软件公司的博客 849

为什么要用Qt开发(Qt跨平台应用开发)

1、这些行业的软件在使用qt之前都是使用VC++开发,而VC++逐渐没落,图形开发简陋死板,不容易开发出漂亮的界面。有别于一般局限于特定系统与运行环境的编译器,GCC在所有平台上都使用同一个前端处理程序,产生一样的中介码,因此此中介码在各个其他平台上使用GCC编译,有很大的机会可得到正确无误的输出程序。所以在各个平台上用原生的编译器就可以了,用平台原生编译器可以在相应的平台快速稳定的编译出应用程序。可以实现非常好看的软件。阅读类软件,音乐播放器,软件商店,轻便聊天工具的界面等轻量级的展示和交互类的软件。

顺其自然~专栏 1万+

Qt C++ 和 Qt Quick 的高速公路收费管理系统

"已连接" : "未连接")"断开" : "连接COM3"1. **ETC通信**:通过 `QSerialPort` 与读卡器串口通信,支持自动识别车辆ID;1. **Qt Quick 触摸屏界面**:负责收费操作、车辆信息展示、ETC感应状态显示;1. **数据库存储**:添加 `QSqlDatabase` 存储车辆信息、收费记录;- **硬件**:支持串口的嵌入式设备(如NVIDIA Jetson、树莓派)或PC;- **软件**:Qt 5.15+(支持Qt Quick和SerialPort模块);

寒寒豆豆软件公司的博客 144

MobaXterm破解14个会话限制的保姆级教程(附Python环境配置指南)

本文提供了MobaXterm破解14个会话限制的详细教程,并深入讲解了如何配置稳定的Python环境以支持相关脚本运行。通过理解软件授权机制、安全实践步骤以及许可文件的应用,帮助用户解除会话数量限制,实现高效的远程服务器管理与自动化运维。

weixin_29211309的博客 1645

QT收费情况

​​​​​​QQT收费方法及价格_qt收费吗-优快云博客

荒野 653

Ubuntu18.04 SoftRoCE安装教程

目标:创建两台Ubuntu18.04虚拟机,安装SoftRoCE环境,一台作为Server,一台作为Client,模拟RDMA通信环境,熟悉RDMA的通信方式。

GGGYL111的博客 1548

QT收费方法及价格

QT收费方法及价格 商业授权 核心优势: 允许静态链接、闭源发布,支持所有平台(包括移动端和嵌入式)。 提供独家模块(如自动化测试工具、MCU 支持)和技术支持。 授权类型: 桌面开发许可(Qt for Application Development, AD):按开发者数量收费,每人需单独购买许可。 设备开发许可(Qt for Device Creation, DC):若软件与硬件绑定分发(如嵌入式设备),需额外购买设备分发许可

热土程序园,利他愉己~ 1万+

Anki小白必看:手把手教你打造高颜值个性化笔记模板(附Leaflyer模板下载)

本文为Anki新手提供详细的个性化笔记模板设计指南,从基础配置到高级定制技巧,帮助用户打造高效记忆系统。特别推荐Leaflyer模板下载,通过视觉优化和功能强化,显著提升学习体验和记忆效率。

weixin_28717969的博客 433

库卡C4控制柜首次上电

本文详细介绍了如何使新购的库卡机器人(以KRC4为例)达到正常运行状态。首先,必须正确连接机器人尾部和控制柜底部的各种线缆,包括动力线缆、编码器线、SmartPad线和安全回路线缆等。特别强调,电源线和蓄电池线的正确连接至关重要,避免硬插以防损坏。此外,机器人与控制柜之间需连接地线以防止漏电。文章还提到,开机前需检查电机保护器开关,并确保所有线路连接正确。开机后,需提升用户权限至安全维护员级别,通过系统配置激活安全相关通讯参数。最后,文章详细解释了X11安全回路的接线方式,强调双通道信号的重要性,并提醒不同

2202_75959322的博客 1838

QT6要收费---也可能免费

pyside6就是配套qt6的。

420

车辆TBOX科普 第64次 TBOX系统集成测试与文档编写

汽车电子开发中,TBOX作为核心网关面临独特挑战:需处理多网络接口、满足严苛安全标准并确保10年以上可靠性。项目文档是开发流程的核心资产,必须与编码同步更新,构建从需求到测试的完整闭环。系统集成测试需分层进行,结合硬件在环测试和自动化工具,并严格管理缺陷。文档与测试深度协同,通过追溯矩阵确保每个需求都被覆盖验证。最终交付不仅是软件包,更是一套包含完整验证报告的信任体系。这种严谨的工程纪律,是将代码转化为车规级可靠产品的关键保障。

IT深耕十余载,大道之简 1324

探索高效智能:基于Qt的多线程高速收费系统

探索高效智能:基于Qt的多线程高速收费系统 【下载地址】基于Qt实现的多线程客户端与服务器 本资源文件提供了一个基于Qt开发的高速公路智能收费系统的实现。该项目是我在东软实习期间完成的一个项目,主要目的是通过多线程技术、数据库操作以及图片处理等技术,实现一个高效、智能的收费系统 ...

gitblog_09760的博客 569

078、镜头阴影校正:LSC算法原理与标定优化

文章摘要 镜头阴影校正(LSC)是手机影像系统中的关键技术,用于解决镜头渐晕效应导致的画面边缘暗角问题。本文详细分析了LSC算法的核心原理,包括非均匀网格划分、双线性插值等关键技术点,并揭示了标定流程中的常见陷阱(光源均匀性、灰卡反射特性、温度漂移)。文章还深入探讨了增益计算的工程实现细节,以及实际调优中的关键考量因素(色差校正、动态场景适应等)。作者结合15年经验,给出了包括验证方法、网格参数设计、产线标定等实用性建议,强调LSC算法应与光学设计协同优化,才能达到最佳效果。

sundong_81的博客 42

HBase学习二:RegionServer详解

RegionServer是HBase系统中最核心的组件,主要负责用户数据写入、读取等基础操作。RegionServer组件实际上是一个综合体系,包含多个各司其职的核心模块:HLog、MemStore、HFile以及BlockCache。一个RegionServer由一个(或多个)HLog、一个BlockCache以及多个Region组成。其中,HLog用来保证数据写入的可靠性;BlockCache可以将数据块缓存在内存中以提升数据读取性能;

qwerty1372431588的博客 747

ARM + Linux + QT 智能停车收费系统

此项目为本人本科毕业设计项目,非常简单的一个停车收费系统,我的重点放在了Qt开发上位机软件上,简单记录一下。 利用ARM Cortex-A9芯片作为车道控制设备中央处理器,基于Linux系统开发下位机程序,搭建服务器,驱动摄像头,采集传输车牌视频信息。利用Qt开发平台自主开发一款配套下位机系统的上位机管理软件,实现视频接收、车牌识别、计费管理、记录查询等相关操作。 一、系统需求模型 二、系统总体设计 三、硬件设计 四、软件设计 ...

寒木休思的博客 8262

SolidWorks软件二次开发:使用C#进行SolidWorks二次开发

SolidWorks 提供的 API(应用程序编程接口)允许开发者使用多种编程语言(如 C#、VB.NET 等)来控制和扩展 SolidWorks 的功能。API 架构基于 COM(组件对象模型),这意味着开发者可以通过引用 SolidWorks 的类型库来访问其对象模型。SolidWorks 的对象模型包括了从文档、零件、装配体到特征、草图等所有 SolidWorks 中可操作的对象。

kkchenjj的博客 3215

Qt程序员必看/关于Qt收费的官方答复

Qt程序员必看/关于Qt收费的官方答复

2501_93198929的博客 1473

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

QT开源又收费是怎么回事?

QT开源又收费是怎么回事? Qt 的“开源又收费”模式源于其双重授权协议机制,即同时提供开源协议(LGPL/GPL)和商业授权协议。这种设计允许开发者根据自身需求灵活选择,但也导致了部分使用场景的复杂性。

热土程序园,利他愉己~ 2379

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 两分钟彻底让你明白Android中onInterceptTouchEvent与onTouchEvent(图文)!
下一篇: 几种常见的开源软件许可协议(GPL, LGPL, Apache License, BSD)
shareCode
博客等级 码龄15年 125粉丝 40原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值