跨平台GUI开发技术:QT,GTK+, C#(WinForm/WPF), Java(Swing/AWT/JavaFX), Electron, compose-multiplatform, Flutter, JS?

发布时间 2023-07-12 14:45:58作者: petercao

1.Compose-multiplatform

Jetbrian推出的跨全平台开发组件技术,android/ios/desktop(win,linux,mac)/web,

目前生态完善中,还不够成熟,但有潜力,支持原生接口调用,kotlin作为主要语言。

https://www.jetbrains.com/zh-cn/lp/compose-multiplatform
https://github.com/JetBrains/compose-multiplatform
https://github.com/JetBrains/compose-multiplatform/blob/master/tutorials/README.md

Get started with Kotlin Multiplatform for mobile
https://kotlinlang.org/docs/multiplatform-mobile-getting-started.html

 

2.Flutter 

谷歌的跨平台开发技术,采用谷歌自研Dart语言编写,可以跨Android/ios/web/desktop, 性能待提升。

目前生态完善中,还不够成熟,但有潜力.

https://flutter.dev/

 

3.QT/PyQT

在Windows下,GUI解决方案比较多,基于C++的有Qt、MFC、WTL、wxWidgets、DirectUI、Htmlayout等等,基于C#的有 WinForm、WPF等等,基于Java的有AWT、Swing等等,但是qt依然占据了很大部分。
在消费类电子、工业控制、军工电子、电信/网络/通讯、航空航天、汽车电子、医疗设备、仪器仪表等相关行业,也都有 Qt 的影子。

跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。其优势如下:

1. 跨平台,可在Windows、 Linux、Unix等多平台开发。
2. QT做的GUI开发要比MFC要好,并且QT界面库支持CSS,界面设计更方便更美观。
3. 面向对象的特性体现的比MFC明显,在命名,继承,类的组织等方面保持了优秀的一致性,代码写起来比较优雅。
4. 近几年MFC没有太大的发展,QT一直在更新,功能也越来越强大。

Qt是一个1991年由Haavard Nord和Eirik Chambe-Eng开发的跨平台C++图形用户界面应用程序开发框架。发展至今,它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt 同Linux上的 Motif,Openwin,GTK 等图形界面库和Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西。但它对比其他做界面的软件会比较容易使用和学习。

 

Qt简介
Qt 是一个跨平台的C++应用程序框架,支持Windows、Linux、Mac OS X、Android、iOS、Windows Phone、嵌入式系统等。也就是说,Qt 可以同时支持桌面应用程序开发、嵌入式开发和移动开发,覆盖了现有的所有主流平台。你只需要编写一次代码,发布到不同平台前重新编译即可。
Qt 不仅仅是一个GUI库,它除了可以创建漂亮的界面,还有很多其他组件,例如,你不再需要研究STL,不再需要C++的<string>头文件,不再需要去找解析XML、连接数据库、Socket 的各种第三方库,这些 Qt 都已经内置了。
Qt 是应用程序开发的一站式解决方案!Qt 虽然庞大,封装较深,但它的速度并不慢,虽不及MFC,但比Java、C#要快。Qt 程序最终会编译成本地代码,而不是依托虚拟机。


Qt Creator 简介
Qt Creator是一个跨平台的,完整的Qt集成开发环境(IDE),其中包括了高级C++代码编辑器,项目和生成管理工具,集成的上下文相关的帮助系统,图形化调试器,代码管理和浏览工具等。

https://download.qt.io/official_releases/qtcreator/10.0/10.0.2/

 

 

Linux 下的 GUI 库

Linux 下常用的 GUI 库有基于 C++ 的 Qt、GTK+、wxWidgets,以及基于 Java 的 AWT 和 Swing。其中最著名的就是 Qt 和 GTK+:KDE 桌面系统已经将 Qt 作为默认的 GUI 库,Gnome 桌面系统也将 GTK+ 作为默认的 GUI 库。

 

Windows 下的 GUI 库

Windows 下的 GUI 解决方案比较多:

  • 基于 C++ 的有 Qt、MFC、WTL、wxWidgets、DirectUI、Htmlayout;
  • 基于 C# 的有 WinForm、WPF;
  • 基于 Java 的有 AWT、Swing
  • 基于 Pascal 的 有Delphi;
  • 基于Go语言的有 walk 和 electron;
  • 还有国内初露头角的 aardio;
  • Visual Basic 曾经很流行,现在逐渐失去了色彩;
  • 如果你有 Web 开发经验,也可以基于 Webkit 或 Chromium 将网页转换为桌面程序。

用 Qt 来开发 Windows 桌面程序有以下优点:

  • 简单易学:Qt 封装的很好,几行代码就可以开发出一个简单的客户端,不需要了解 Windows API。
  • 资料丰富:资料丰富能够成倍降低学习成本,否则你只能去看源码,关于 DirectUI、Htmlayout、aardio 的资料就很少。
  • 漂亮的界面:Qt 很容易做出漂亮的界面和炫酷的动画,而 MFC、WTL、wxWidgets 比较麻烦。
  • 独立安装:Qt 程序最终会编译为本地代码,不需要其他库的支撑,而 Java 要安装虚拟机,C# 要安装 .NET Framework。
  • 跨平台:如果你的程序需要运行在多个平台下,同时又希望降低开发成本,Qt 几乎是必备的。

 

refs:

https://www.v2ex.com/t/955040?p=2
http://c.biancheng.net/view/3876.html

[转帖]珍爱生命,远离微软,一点感受源自知乎上的某人评论
https://blog.51cto.com/u_15545168/5158725