关于Flutter与Qt for python 的一些技术、开源、商用等问题

关于Flutter、Qt for python 以及一些技术、开源、商用问题

为什么写这篇文章?

首先我自认为我是一个非常喜欢极简主义一次编译处处运行 这些概念的人。当然,这也是我选择学习跨平台 技术(Qt for pyhonFlutter)的原因。

首先我先叠一层甲,下边的都是我的一些个人观点,不喜勿喷。

极简

Flutter是真正免费的全栈语言,可以开发 前端、后端、移动应用和桌面应用,对于掌握Javajs的上手难度较低,可能会存在难以解决的Bug

Qt for Python LGPL 支持商用免费,基于Qt适合桌面应用程序以及掌握Python语法的人,可学习项目少(需要自己踩坑)。

关于Flutter全栈

我是在64位 的 Linux环境上开发,只是看过基础部分语法,运行过一些demodemo链接

关于Flutter的语法:

首先,我认为语法角度 Python要比Dart简洁的多(当然部分小语法还是比较简洁的比如判空等)。Dart的语法门槛对于学习Java以及JS的人来说应该要比较简单。

关于技术问题

Flutter的野心特别大,要把桌面应用(WindowsLinuxMacOS)、移动应用(androidiso)、网页(ChromeEdge引擎等)。首先,不得不佩服google不愧是大公司,财大气粗才会想着实现大一统(要是一些小企业想着就是先上桌喝口汤);其次,要兼容这么多平台,光想想就觉得工程量非常大。这就注定是一个漫长的维护周期,且必定有一些技术问题长期无法得到解决(这部分我是去知乎了解的,看的太多不一一列举了);最后,毕竟是google维护的大项目,要是持续更新维护就存在更好或完全兼容的可能性(可能国外会有一些大佬先有解决方案)。

结论 : 跨平台开发可以,我在Linux上测试webandroidLinux均可。这里分享下我的避坑文章

关于Qt for python桌面GUI程序开发

这部分我觉得还是有一定话语权,毕竟写了这么多博客!

技术问题

我觉得学习一个技术要知道这个技术:能做什么,不能做人么(什么是强项,什么是弱项),这也是比较耽误时间的(有些技术噱头太大,又没有人分享踩坑经验,只能"先干为敬"),Qt for python背靠的是Qt这颗大树,得益于QtPython提供的各种接口,使得Python开发桌面应用程序(WindowsLinuxMacOS)成为可能。但是Qt的学习曲线就陡、Python只是开发效率高了,该了解的还是得了解(像什么QSSQML以及各种控件)。

结论:Qt for Python桌面程序开发(WindowsLinuxMacOS)可以,移动应用就是噱头(C++ Qt应该可以,不过笔者没搞过)

语法

Qt的框架足够大,大到什么程度?你几乎可以将Qt抽象为一门语言。主要就是类多、轮子多。但是,Qt for Python主要还是Python语法。

文档相关

我在一个Qt for Python的技术群里看到有人这样评价flutter的文档是一堆shit(大致意思,原话记不清了),我作为一个初学者也是这样的感受。与之相比Qt for Python或者Qt(文档更全)的文档就比较人性化了,但是就我使用下来也没有特别人性化。比如: 一些冷门的部件、一些特殊的属性等,而且免费分享踩坑经验的人 少之又少,遂只能看看相关类与父类的属性、方法、信号、槽等。

结论: Qt for Python的官方文档相比Flutter的要好太多,但是一些冷门的还是需要自己踩坑。

其他

首选,Qt for Python可以学习的项目,我觉得比较少(主要是一些辅助开发项目以及一些入门教程),这部分书籍也是基础篇多(可视化爬虫和游戏以及数据分析相关,就算不错的项目了;PyQt5的项目可能更多 像什么串口连接工具)。也有可能是搞Qt的大部分不是嵌入式、就是什么音视频处理。

注意 : 有些真的是噱头,就是无脑显示一个好看的界面骗点赞、关注以及马内 (有不少但我不敢说)。

学习建议

PyQt5-6 PySide5-6的书和项目都看看(最好有精力再学学C++,读者精力有限遂放弃)。买书其实也是避免重复造轮子,很少有人纯为爱发电(纯开源)。当然你也可以理解为主题阅读,更容易构建完善的知识体系。

商用

Qt for Python

社区版本是支持GPLLGPL俩种模式的,前者享受自由就必须分享自由 ,后者商用可不开源

Flutter免费商用

Qt for Python或Qt 与 Flutter怎么选?

这里首先要保持正确的态度,框架的性能确实是有瓶颈的!但是以我们能打60的及格分显然想要触及到还是比较难的! 学习优化也是重要的一环。

先说说桌面应用程序,知乎上好多人说Flutter不重视桌面应用程序的维护(具体看的帖子太多,记不清了)相

比,QtQt for Python就比较靠谱点了;安卓的话就从知乎的评论来看应该内存 是主要的瓶颈,Qt的话没有搞过(拿Qt for Python还是别搞了 太折腾)。

"小孩子才做选择,大人:我全都要" 这也许就是Flutter吧,抱着这个想法你应该选择野心勃勃的Flutter了。

关于各种平台运行和部署

运行的话都没什么问题!
Flutter部署

  • windows好像需要什么VSSgo环境
  • Linux snap官网提供,flathub一些github提供了解决方案
  • 安卓:可行,不过一个demo70个M认真的吗?
  • 其他: 条件有限,未测试。

是否要坚持当前的技术栈或学习新技术

这个问题的本质就是看兴趣和工作内容,如果需要和感兴趣那当然要学。

干一行爱一行还是干一行恨一行?

越新的技术代表有更多可能性(不过还是依赖于社区和开发者等的长期维护),旧的技术由于功能相对健全、bug维护更及时。这样看就不难理解为什么会爱和恨:

a. 爱是因为刚入门或者享受到了技术带来的乐趣。

b. 很就是到了技术栈的顶端(当然你要是一直没有补全技术债,那当我没说)

打个比方:学一门科目,刚开始考60其实是比较简单那80呢?90呢?100呢?

当能打一个80左右我觉得大部分 需求都能解决了!剩下时间可以留着了解其他技术栈。

想入行或者兴趣爱好 怎么坚持?

这里笔者不得不吐槽了,对于我们00后 什么IT技术红利也没赶上(倒是非典、新冠赶上了),与90后比工作经验我们没有,70/80后比人脉资源我们没有。我们有什么?那就是年轻,接受新鲜事物或信息能力强。其实我觉得IT也是比较吃经验的,有很多Java的大佬,什么安卓开发、后端、前端等 都是手拿把恰。也许是机构的后期服务,不过我觉得更多是直接或间接内化或形成了处理Bug与学习新技术的逻辑。

怎么坚持?我觉得还是培养成一种兴趣、爱好,做好短时间内看不到成果如马内的心理建设。

在短视频的熏陶下,我们渐渐丧失了,做成一件事情的耐心,开始变得基于求成。慢下来,坚持下来,技术会慢慢精进。

开源是一场骗局?

开源也是有好的,看是不是纯开源,不过国内外环境不一样。以下为个人观点:

国外大公司不缺钱: 先把蛋糕做大。

国内小公司缺钱: 先能吃个小蛋糕就吃个小蛋糕。

关于一些项目开源后又增加商用模式?这是一种常见的开源收益模式(比如QtAnconda),还有Donate捐赠或者由开源基金会支持。还有的会半开源,一部分可以免费,但是高级的需要付费(不难理解,确实是需要长期维护,是需要耗费脑力和人力的)。

这里我吐槽几句,好产品不如好营销。奔着技术去就好好擦亮眼睛,看看是不是噱头!(给你装个B,让你觉得牛13 ,但一点实用性都没有这种就f**k off)

这里我还想扯个咸蛋,有些人或者公司真的很无良,互相利用噱头来哄骗无知的人群(我觉得他们是搞营销的,不是搞技术的!)。这种感觉就像这么一句话:"左脚踩右脚上天!"。你装腔作态,他虚张声势,结果把搞技术的的和不搞技术的人都唬住了。我真的希望这些人善良,不要把环境给弄脏了!

相关推荐
友友马2 小时前
『 QT 』按钮类控件属性解析
开发语言·数据库·qt
Evand J2 小时前
【MATLAB例程】基于噪声协方差自适应的互补滤波器方法vs标准互补滤波,用于融合加速度计和陀螺仪数据,估计角度
开发语言·matlab
熊小猿2 小时前
RabbitMQ死信交换机与延迟队列:原理、实现与最佳实践
开发语言·后端·ruby
@小码农2 小时前
2025年北京海淀区中小学生信息学竞赛第一赛段试题(附答案)
人工智能·python·算法·蓝桥杯
2301_795167202 小时前
玩转Rust高级应用 如何让让运算符支持自定义类型,通过运算符重载的方式是针对自定义类型吗?
开发语言·后端·算法·安全·rust
梦想平凡2 小时前
情怀源代码工程实践(加长版 1/3):确定性内核、事件回放与最小可运行骨架
开发语言·javascript·ecmascript
笑我归无处3 小时前
强引用、软引用、弱引用、虚引用详解
java·开发语言·jvm
02苏_3 小时前
秋招Java面
java·开发语言