当前位置: 首页 > 科技观察

QT、WPF、PyQt、Electron桌面应用解决方案

时间:2023-03-22 13:28:12 科技观察

C++的QT背景Qt是Qt公司于1991年开发的一个跨平台的C++图形用户界面应用开发框架,既可以用来开发GUI程序,也可以用来开发非GUI程序程序,例如控制台工具和服务器。Qt是一个面向对象的框架。使用特殊的代码生成扩展(称为元对象编译器(moc))和一些宏,Qt易于扩展并允许真正的组件编程。2008年,Qt公司技术被诺基亚收购,Qt成为诺基亚的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境QtCreator3.1.0正式发布,全面支持iOS,增加了WinRT、Beautifier等插件,摒弃了没有Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做了调整,目前已全面支持iOS、Android、WP,为应用程序开发者提供了创建艺术GUI所需的所有功能。Qt基本上与XWindow上的Motif、Openwin、GTK等图形界面库以及Windows平台上的MFC、OWL、VCL、ATL等同类型。基于QT编写的具有诸多优势的跨平台桌面应用程序,既保证了跨平台性,又最大限度地提高了运行效率。Qt适合一些对性能要求比较高的桌面应用,如果你只打算做桌面的话。或者一些特殊的场景,比如你想做一个像逼真的视频编辑器这样的视频编辑器,或者像word这样的桌面应用,那你要么用electron做不了,要么体验很差。在实际应用中,比如wps、yy语音、VirtualBox,还有一些adobe桌面工具都是Qt做的。C#的WPF和WinFormWinform大多数人基于Winform开发CS程序,简单高效,但它的缺点是如果要深入美化UI,需要付出很大的努力。对于目前主流的CSS样式表而言,美化Winform界面和自定义控件需要花费更多的时间。写好的程序如果需要改界面,涉及面会很大。代码编辑可能会在没有意识到的情况下导致更多错误和遗漏。大项目改接口就更惨了。wpf的优势Wpf需要学习xaml,拥有全新的ui描述语言,尤其是可以通过模板嵌套实现复杂的元素,通过样式实现类css的功能,通过比winform更完善的数据绑定机制实现业务逻辑。专注于数据开发,而不是界面。学习wpf可以更容易的过渡到其他xaml相关的技术。这是微软目前广泛使用的一项技术,比如下一个Windows通用应用程序。使用mvvm(model,view,viewmodel)编写,让你的界面大变样,后台代码丝毫不受影响。WPF不能在其他操作系统上运行,并且用XAML编写样式表不如HTML通用。从学习和应用的角度来看,HTML更好。Resolution-independentWPF是基于矢量图绘制的,所以它生成的图形界面可以支持各种分辨率的显示设备,在像WinForm这样的高分辨率真实设备上不会出现锯齿。硬件加速技术WPF是基于Direct3D创建的。在WPF应用程序中,无论是2D还是3D图形或文本内容都会被转换成3D三角形、材质等Direct3D对象,由硬件进行渲染,这样可以更好的利用系统的图像处理单元GPU,从硬件上受益于加速。绚丽的显示效果,WPF(WindowsPresentationFoundation),顾名思义,其强大的图形API为程序提供了超乎想象的图形效果;XAML的引入实现了美工与程序的分离,使得自定义主题/外观/行为更加方便,易于维护;强大的“数据绑定”功能使MVVM得以实现,成为“属性驱动”而不是WinForm的“事件驱动”;可以自动获取属性变化,甚至可以通过转换器触发各种显示/行为变化;Style允许你对不同的控件应用不同的样式,易于管理Python的PyQtPyQt5是一个python的GUI框架。有一个界面设计器QtDesigner工具,可以方便地使用拖放来构建页面。然后使用工具从UI文件中生成对应的python代码。优点:跨平台效果好,完美支持Mac、Windows、UNIX等系统;简单易学,面向对象的特点比其他框架更明显,在命名、继承、类组织等方面保持极佳的一致性,代码写起来更优雅。功能强大,基本能实现QT能实现的所有功能文档丰富,PyQt用户多,可直接参考QT文档,后期开发更方便有了QTDesigner和QSS支持,界面效果更好pyqt5是双重许可,开发者可以在GPL和商业许可之间进行选择。学习PyQt5后,只需要学习C++即可完成Qt开发,转行。你可以用一块石头杀死两只鸟。配合Django实现CS、BS全技能开发。长期维护是很多程序员选择框架的重要标准。毕竟一个项目系统的运行周期可能会很长。如果框架不能及时支持,后面会有很多麻烦。由Github开发,这是一个开源库,用于使用HTML、CSS和JavaScript构建跨平台桌面应用程序。Electron通过将Chromium和Node.js合并到相同的运行时环境并将其打包为适用于Mac、Windows和Linux的应用程序来实现这一点。Electron适合一些面向业务的应用,对性能要求不高,主要是业务逻辑和UI展示,比较轻量级的应用。因为Electron可以用一段代码同时搞定网页版和桌面版,所以如果你的应用还需要网页版,那么Electron可以大大节省你的开发和维护成本。比如钉钉、slack,现在越来越多的面向业务(不需要高性能专业工具)的应用开始使用Electron。优点开源核心扩展比较容易,目前基于node6.x,现在gyp非常人性化,很容易做C++和JS的基础。该界面是高度可定制的。原则上,它可以做Web可以做的任何事情。它是目前最便宜的跨平台技术解决方案。HTML+JS拥有大量的前端技术人员储备和大量现成的webUI库。大多数都非常可靠。与其他跨平台解决方案(如QTGTK+等)相比,更稳定,bug更少。毕竟只要浏览器shell在运行,里面就不会有太多的问题。当然,我也遇到过一些暗坑。方便的热更新。下载被覆盖。当然这是所有脚本共有的优点。缺点:1.卡死,启动慢,这个可能是webkit的错。毕竟一个浏览器要支持的功能确实很多。2、除了主进程,你可能还需要启动一些辅助进程来完成工作。而每当你启动一个新的进程时,启动的代价就是一个nodejs的内存开销!3.丢帧,这个是最严重的,不过我已经习惯了原生的丝滑感。mac下感觉还行,win下就有点别扭了。4.打出的包太大。(显然,即使是一个空包也至少包含一个浏览器的大小)