首页 > 编程语言 >跨平台GUI开发技术:QT,GTK+, C#(WinForm/WPF), Java(Swing/AWT/JavaFX), Electron, compose-multiplatform, Flutte

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

时间:2023-07-12 14:48:40浏览次数:61  
标签:MFC Qt Windows GUI AWT 跨平台 C++ 开发技术

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

标签:MFC,Qt,Windows,GUI,AWT,跨平台,C++,开发技术
From: https://www.cnblogs.com/bluestorm/p/17547439.html

相关文章

  • 跨平台低延迟RTSP转RTMP推送技术方案探讨
    实现RTSP摄像头数据转RTMP推送到服务器,可以用第三方库或者工具实现,总体设计架构如下:一个好的转发模块,首先要低延迟!其次足够稳定、灵活、有状态反馈机制、资源占用低,跨平台,最好以接口形式提供,便于第三方系统集成,整体功能设计如下:1.拉流:通过RTSP直播播放SDK的数据回调接口,拿到音视频......
  • 跨平台轻量级RTSP服务模块设计思路及实现探讨
    技术背景为满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的服务器,我们发布了轻量级RTSP服务模块,轻量级RTSP服务解决的核心痛点是避免用户或者开发者单独部署RTSP或者RTMP服务,实现本地的音视频数据(如摄像头、麦克风),编码后,汇聚到内置RTSP服务,对外提供可供拉流的RTSP......
  • 树莓派Linux跨平台免授权CNC数控数据采集协议,TCP协议包,支持(fanuc、三菱、西门子、海德
    市面上的数控基本都支持了跨平台通讯,下面以三菱为列讲解跨平台协议如何通讯,无需任何DLL,适配任何开发语言,纯Socket通讯先上采集图   代码如下usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;us......
  • 助教工作总结(前端开发技术)
    一、助教工作的具体职责和任务(1)和老师配合的方面理论课(1) 老师会在每一块内容授课结束后发布相应云班课的作业,在理论课进行时,我主要的工作是负责的作业批改,和提醒同学们修改,解答同学们在实操时遇到的一些问题。(2) 定期收集课程的评价,同学们对课程某些方......
  • java Swing和AWT是什么关系?
    1)AWT是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT的Java程序,其运行速度比较慢。2)AWT的控件在不同的平台可能表现不同,而Swing在所有平台表现一致。参考:https://www.cnblogs.com/RUI2022/p/16975881.html参考2:https://www.cnblogs.com/2008nmj/p/16257373.html(ge......
  • Avalonia跨平台入门第二十一篇之玩耍CEF
    在前面分享的几篇中咱已经玩耍了Popup、ListBox多选、Grid动态分、RadioButton模板、控件的拖放效果、控件的置顶和置底、控件的锁定、自定义Window样式、动画效果、Expander控件、ListBox折叠列表、聊天窗口、ListBox图片消息、窗口抖动、语音发送、语音播放、语音播放问题;今晚......
  • 跨平台应用的全新时代:Avalonia V11
    译介今天,我们非常高兴地宣布Avalonia11.0版本的发布!在经历了近一年的预览版本和无数个数以千计的工作小时后,现在是时候发布一款改变游戏规则的跨平台应用程序开发工具了。Avaloniav11代表着我们在实现目标上的巨大飞跃,为开发人员提供了高效、功能丰富和无缝的体验,可以在所有主......
  • KMM跨平台开发入门,看这一篇就够了~
    前言近些年,不管是最初的RN还是到现在的Flutter、Compose,他们都在做着一件事——跨平台。他们的成就主要都是在UI上跨平台,当然Flutter虽然可以处理一些公共的业务逻辑,但目前在业务较重的情况下仍然需要各自处理。  而KMM却与之相反,接下来让我们来一起了解一下吧~什么是KMMKMM即K......
  • 关于vue的跨平台打包方式
    在先前写了一个vue的程序,想着万一以后会用到网页端转移动端的功能,就尝试着使用打包功能。1.使用cordova进行跨平台的打包(需要准备:java,sdk(最好下一个androidstudio,要做好发墙的准备),gradle等)具体操作可以参考https://blog.csdn.net/qq_21963133/article/details/88546086,我在使......
  • 一个跨平台的`ChatGPT`悬浮窗工具
    一个跨平台的ChatGPT悬浮窗工具使用avalonia实现的ChatGPT的工具,设计成悬浮窗,并且支持插件。如何实现悬浮窗?在使用avalonia实现悬浮窗也是非常的简单的。实现我们需要将窗体设置成无边框在Window根节点添加一下属性,想要在Linux下生效请务必添加SystemDecorations属性ExtendC......