GUI简评

2024-01-23 10:08
文章标签 gui 简评

本文主要是介绍GUI简评,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

知名 GUI lib 简评 (GTK+, Qt, wxWidgets,MFC)
    之前因为把 MFC 痛骂了一顿,有网友在询问其它 GUI toolkit ,所以小弟分享一下个人对三大知名图形形接口 library 的简短评论,纯属个人主观意见,不是业界人士,所知有限,望先进前辈不吝指正或补充

1.GTK+
GTK+ 主要用在 X Window 上,整个设计的架构和许多概念和 MFC 以及一般 Windows 上的程序开发大异其趣,入门门坎较高,而且最主要的特色是,他用不具有对象功能的纯"C" 语言,仿真对象导向。 所以写起来比较复杂艰涩,而且充满大量宏,使用和除错都不是很容易,但优点则是可以用 C,不需 C++,如果和 Win32 SDK 比较,不会难学多少,缺点是不易上手使用,而且文件比较缺,架构又非常复杂,且提供的东西比起其它无所不包的 library,是简陋了一点,函数命名又臭又长。 对于简单的程序,GTK+ 会显得太复杂,但是当你开始想扩充其它 library 也都没提供的进阶功能,就会开始赞叹GTK+ 的架构严谨,还有超乎想象的高度弹性。 同样的东西要用 MFC 来做反而会要人命并且多国语言的支持良好,内部也全面使用 UTF-8,兼容性好,又是 unicode能够习惯的话,GTK+ 值得推荐,但没有很建议学,毕竟不好学,要用到熟会需要比较久,而且那样很多 C++ 的功能会用不到。 GTK+ 有 C++ 版本叫做 GTK--,没用过但看文件觉得,并没有比 gtk+ 简单到哪里去。 因为 gtk+ 本来就是对象导向,所以即使换了 c++ 语言,写起来架构还是差不多的。 另外,gtk+ 有 Windows 版本,但缺点是,执行缓慢,不稳定,而且接口是使用 gtk+ 自己的,不是使用 Windows 内建的"Native" 原生图形接口,看起来会不太习惯。 Mac OS X 下可用 X11 来执行 gtk+但那样出来的程序是长得像 UNIX 程序,而不是美美的 OS X Aqua 外观

2.wxWidgets
wxWidgets 和 MFC 最接近,命名习惯或架构都高度相似,会 MFC 几乎不用重新学习,有十余年历史,此外,他的对象封装比 MFC 要好,提供的功能也多上太多,又跨平台一般知名的 MFC 程序都会选择用 wxWidgets 改写,来快速移植原程序到其它平台例如 eMule 用 wxWidgets 移植出 aMule, xMule, 还在开发中的 Filezilla 3...等
而他最主要的特色是,他是"跨平台"的 "Native" GUI toolkit,在各种平台上都可写出使用该平台内建 Native 原生图形接口的程序。 在 Windows 上就长得跟其它 Windows程序一样,在 Linux 下就使用 gtk+ 的图形接口,在 Mac OS X 下就可以使用华丽的Aqua 外观风格,这点是非常强悍。 不像 gtk+ 到其它系统都还是只能用 gtk+ 自己的缺点是,中文支持在有些地方会出问题,例如剪贴簿的操作。 得自己 patch但仍然相当推荐,即使是个庞大的 library,效能依旧不会太差,尤其在 Windows 上执行速度并不输 MFC,与其学 MFC,不如学 wxWidgets。

 

3.Qt
Qt 的功能,应该是这三者加上 MFC 之中最强大的,文件也很完整,又有 RAD 工具可以辅助开发,并且有商业公司做强力后盾。不但有 Windows/X Window/Mac 版本,甚至还有嵌入式系统可用的版本,稳定性还不错,对象封装也算良好,资源比 GTK+ 或wxWidgets 多得非常多,而且发行公司提供了相当多范例,算是一家以开放原始码成功营利的模范公司。 知名的 KDE 整个是用他开发,证明了他的稳定性和强大功能。缺点是如果你用他开发非 GPL 开放程序代码的软件,必须以极昂贵的金额,购买商业版本。 而他的图形接口并不完全是 "Native GUI",只是透过 theme 去仿真系统上的标准 GUI,所以看起来很像,却会有些地方可以明显看出破绽。 执行速度缓慢还有过于庞大则是另一个问题。 虽然封装得很良好文件也齐全,并不代表他就很容易学,还有一个严重问题是,他写的不是标准 C++,他使用的 signal/slot 机制必须透过 Qt提供的 preprocessor 处理过才可以转送给编译器,这部份可能被限定用 qmake,算是一个可惜的地方,不过瑕不掩瑜,还是很推荐。忘了说,他内部也是unicode,多国语言没问题。

以上三套只是简单介绍,其中 Qt 的程序我没有实际完整开发过,但明显的三套都远远比只能在 Windows 上用,功能少 Bug 多难学难用几乎无多国语言支持的 MFC 要强。三套可跨平台的 library 大家可自行选择,只能用在 Windows 的 MFC 就不用考虑了

这篇关于GUI简评的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/636057

相关文章

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

Golang GUI入门——andlabs ui

官方不提供gui标准库,只好寻求第三方库。 https://github.com/google/gxui 这个gui库是谷歌内部人员提供的,并不是谷歌官方出品,现在停止维护,只好作罢。 第三方gui库 找了好多,也比较了好多,最终决定使用的是还是 https://github.com/andlabs/ui 相信golang gui还会发展的更好,期待更优秀的gui库 由于andlabs

GUI编程08:画笔paint

本节内容视频链接:10、画笔paint_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DJ411B75F?p=10&vd_source=b5775c3a4ea16a5306db9c7c1c1486b5 package com.yundait.lesson03;import java.awt.*;import java.awt.event.Wind

C++入门(06)安装QT并快速测试体验一个简单的C++GUI项目

文章目录 1. 清华镜像源下载2. 安装3. 开始菜单上的 QT 工具4. 打开 Qt Creator5. 简单的 GUI C++ 项目5.1 打开 Qt Creator 并创建新项目5.2 设计界面5.3 添加按钮的点击事件5.4 编译并运行项目 6. 信号和槽(Signals and Slots) 这里用到了C++类与对象的很多概念 1. 清华镜像源下载 https://

Git Gui 查看分支历史的时候中文显示乱码

如图所示 在Git Gui工具栏上选择-编辑-选项: 选择:Default File Contents Encoding, change为UTF-8 成功:

结合Python与GUI实现比赛预测与游戏数据分析

在现代软件开发中,用户界面设计和数据处理紧密结合,以提升用户体验和功能性。本篇博客将基于Python代码和相关数据分析进行讨论,尤其是如何通过PyQt5等图形界面库实现交互式功能。同时,我们将探讨如何通过嵌入式预测模型为用户提供赛果预测服务。 本文的主要内容包括: 基于PyQt5的图形用户界面设计。结合数据进行比赛预测。文件处理和数据分析流程。 1. PyQt5 图形用户界面设计

Python GUI入门详解-学习篇

一、简介 GUI就是图形用户界面的意思,在Python中使用PyQt可以快速搭建自己的应用,自己的程序看上去就会更加高大上。 有时候使用 python 做自动化运维操作,开发一个简单的应用程序非常方便。程序写好,每次都要通过命令行运行 python 程序,就不是那么人性化了。为了更方便的操作,使用 Python GUI 编写界面程序,方便后续程序的操作。 二、安装PyQt5和配置可视化界面

王立平--Unity中的GUI Skin

C#脚本: public class NewBehaviourScript2 : MonoBehaviour { public Texture t; public GUISkin skin; // Use this for initialization void Start () { }  void OnGUI(){ GUILayout.BeginArea(new Rect(0, 0, Scr

王立平--GUI与GUILayout的区别

GUI.Button (new Rect(0,0,5,5,"哈哈"); GUILayout.Button ("heheh"); 1.以上代码都是现实一个按钮 2.不同之处: GUI中需要通过new Rect()指定button的位置,不灵活 GUILayout不需要指定位置,会自动确定现实位置,较为灵活。

yolov5 +gui界面+单目测距 实现对图片视频摄像头的测距

可实现对图片,视频,摄像头的检测  项目概述 本项目旨在实现一个集成了YOLOv5目标检测算法、图形用户界面(GUI)以及单目测距功能的系统。该系统能够对图片、视频或实时摄像头输入进行目标检测,并估算目标的距离。通过结合YOLOv5的强大检测能力和单目测距技术,系统能够在多种应用场景中提供高效、准确的目标检测和测距功能。 技术栈 YOLOv5:用于目标检测的深度学习模型。Open