`
djsl6071
  • 浏览: 593355 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

C++各大有名库的介绍——GUI

阅读更多

转自:http://www.ithao123.com/cpluspluslib/0003.html

  在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者水平,其中很多并不了解。所以文中所提的一些库都是比较著名的大型库。

C++各大有名库的介绍——GUI

  在众多C++的库中,GUI部分的库算是比较繁荣,也比较引人注目的。在实际开发中,GUI库的选择也是非常重要的一件事情,下面我们综述一下可选择的GUI库,各自的特点以及相关工具的支持。

1、MFC

  大名鼎鼎的微软基础类库(Microsoft Foundation Class)。大凡学过VC++的人都应该知道这个库。虽然从技术角度讲,MFC是不大漂亮的,但是它构建于Windows API 之上,能够使程序员的工作更容易,编程效率高,减少了大量在建立 Windows 程序时必须编写的代码,同时它还提供了所有一般 C++ 编程的优点,例如继承和封装。MFC 编写的程序在各个版本的Windows操作系统上是可移植的,例如,在Windows 3.1下编写的代码可以很容易地移植到 Windows NT 或 Windows 95 上。但是在最近发展以及官方支持上日渐势微。

2、QT

参考网站:http://www.trolltech.com

  Qt是Trolltech公司的一个多平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流行的Linux桌面环境KDE 的基础,同时它还支持Windows、Macintosh、Unix/X11等多种平台。

3、WxWindows

参考网站:http://www.wxwindows.org

  跨平台的GUI库。因为其类层次极像MFC,所以有文章介绍从MFC到WxWindows的代码移植以实现跨平台的功能。通过多年的开发也是一个日趋完善的GUI库,支持同样不弱于前面两个库。并且是完全开放源代码的。新近的C++ Builder X的GUI设计器就是基于这个库的。

4、Fox

参考网站:http://www.fox-toolkit.org/

  开放源代码的GUI库。作者从自己亲身的开发经验中得出了一个理想的GUI库应该是什么样子的感受出发,从而开始了对这个库的开发。有兴趣的可以尝试一下。

5、WTL

  基于ATL的一个库。因为使用了大量ATL的轻量级手法,模板等技术,在代码尺寸,以及速度优化方面做得非常到位。主要面向的使用群体是开发COM轻量级供网络下载的可视化控件的开发者。

6、GTK

参考网站:http://gtkmm.sourceforge.net/

  GTK是一个大名鼎鼎的C的开源GUI库。在Linux世界中有Gnome这样的杀手应用。而Qt就是这个库的C++封装版本。

 

1、GTK+

GTK+基础

GTK+最初是GIMP的专用开发库,后来发展为Linux下开发图形界面的应用程序的主流开发工具之一。GTK+2.0是自由软件,并且是GNU工程的一部分。GTK+2.0的许可协议是LGPL。

GTK+使用C语言开发,但是其设计者使用面向对象技术。 在GNOME平台上提供了C++(gtkmm)、Perl、Ruby、Java和Python(PyGTK)绑定,其他的绑定有Ada、 D、 Haskell、PHP和所有的.NET编程语言。

与其他很多部件工具箱不同,GTK+并不基于Xt。这一决策优劣互见:优点是GTK+可以应用于其他系统,其灵活性也很强;而缺点就是它无法利用以传统方法为X11定制的X资源数据库。

Glade是一个界面设计工具,但是它也包含了一种描述GUI界面的XML语言,它和libglade一起工作就可以直接使用GTK和GNOME控件。

2、Qt

Qt简介

Qt是Trolltech公司的一个产品。
Qt是一个多平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且 允许真正地组件编程。

自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用 程序的基础。Qt也是流行的Linux桌面环境KDE 的基础,KDE是所有主要的Linux发行版的一个标准组件。

Qt支持下述平台: MS/Windows - 95、98、NT 4.0、ME、和2000
Unix/X11 - Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX和其它很多X11平台
Macintosh - Mac OS X
Embedded - 有帧缓冲(framebuffer)支持的Linux平台。

3、wxWidgets

开源软件(LGPL),针对C++、Python以及Perl的跨平台工具集。

详细介绍,参见细述 wxWindows
wxWidget作为一个C++ GUI Library从1992发展到现在,已经在全球范围内产生了极大的影响力,利用这个类库进行GUI开发的软件更是不计其数。

wxWidgets原名wxWindows,是由Julian Smart于1992年还在英国爱丁堡大学人工智能应用研究所开始的一个项目。Julian Smart现在是Anthemion软件公司的技术总监。

简单地说,wxWidgets提供了用于可在多平台上开发GUI应用程序的一整套简单易学易用的API。wxWidgets支持的多平台包括
Windows 3.1/95/98/NT/2000/XP、带有Motif
1.2版本以上的Unix、带有GTK+的Unix/Linux/*BSD、Mac等等。开发者只需要用自己使用的系统平台的编译器编译源程序,并链接上
相应的库文件,生成的程序代码即具有该平台的外观和界面。在这些GUI之上,wxWidgets还提供了在线帮助、网络编程、流处理、多种常用图形格式支
持、数据库支持、HTML察看和打印,等等各种强大的功能。

wxWidgets支持的Windows上的多种流行编译器包括:
Visual C++ 1.5, 4.0, 5.0, 6.0
Borland C++ 4.5, 5.0
Borland C++ Builder 1.0, 3.0
Watcom C++ 10.6 (Win32)
Cygwin
MinGW32
Metrowerks CodeWarrior 4

 

wxWidgets和GTK+的一大吸引力是它的wxWidgets 2 licence类型是属于LGPL ( Lesser
General Public License
)的,也就是说,使用它开发的软件并不要求一定得公开源码。这样,无论是免费软件的开发者、GPL类型软件开发者,还是纯粹商业软件开发者都可以免费使用
这个软件包。

相比之下,TrollTech的Qt似乎正是因为此因素而影响了它的受接受程度,因为用Qt开发商用软件者所需交纳的费用对于个人
开发者来说还是比较昂贵的,而且分单平台、二平台、三平台(即Qt/X11、Qt/Windows和Qt/Mac都包含在内了)三个不同产品包,又分
Professional和Enterprise不同Edition亦即不同价位,而且开发人员数不同价格也不同。

从这点说来,wxWidgets是绝对具有优势的。另外Qt起源于Linux上的开发,后来推展到Windows、Mac等其它平台;而wxWidgets恰好相反,始于Windows,其后移植到Unix等其它平台。

 

关于LGPL(Lesser General Public License ) 许可,这是 GNU
许可家族中一个不太严格的许可。LGPL 允许任何人使用该库提供的功能,而不
要求用户公开应用程序代码。(这对于许多工业应用来说很重要,因为由于以前的协议或许可,这种场合下一般不希望公开代码或者公开代码是显然不现实的。)使
用 LGPL 许可,您既可以是开放源码社区的好伙伴也可以是好公民。

中文非正式翻译参见 http://gnu.freehostingguru.com/lgpl/

 

其他资源:知名 GUI lib 簡評 (GTK+, Qt, wxWidgets)

分享到:
评论
1 楼 chen_jp 2010-12-08  
非常好,谢谢!

相关推荐

    C++各大有名库的介绍.pdf

    C++各大有名库的介绍 本文对C++中一些知名的库进行了介绍,这些库的出现极大地丰富了C++的应用领域。这些库可以分为几个类别,如标准库、准标准库、GUI库等。 标准库 C++标准库是C++中最基础、最重要的库之一。它...

    C++各大有名库的介绍之C++标准库

    通过以上介绍可以看出,C++标准库及其周边库提供了丰富的资源和支持,无论是基本的编程需求还是高级的GUI开发,都有相应的解决方案。开发者可以根据项目的需求和个人偏好来选择合适的库进行使用。

    C++各大有名库的介绍

    ### C++各大有名库的介绍 #### 一、引言 C++作为一种强大的编程语言,在其发展过程中,库的重要性不言而喻。正如C++之父Bjarne Stroustrup先生所强调的那样,通过设计高质量的库来扩展语言功能远比添加更多语法...

    C++各大有名库的介绍.docx

    下面将详细介绍几个重要的C++库。 1. C++标准库(STL) C++标准库是C++语言的核心组成部分,包含容器(如vector、list、map等)、迭代器、算法、函数对象和内存管理工具。STL(Standard Template Library,标准...

    C++ Builder 5高级编程技术——GUI编程

    C++ Builder 5是一款强大的集成开发环境,专为C++程序员设计,用于构建Windows应用程序,尤其是GUI(图形用户界面)程序。在这个高级编程技术的话题中,我们将深入探讨C++ Builder 5在GUI编程方面的一些核心概念和...

    C_C++语言硬件程序设计——基于TMS320C5000系列DSP

    《C/C++语言硬件程序设计——基于TMS320C5000系列DSP》是一本深入探讨如何使用C和C++编程语言进行数字信号处理(DSP)的专著,特别关注德州仪器(TI)的TMS320C5000系列 DSP 芯片。该书涵盖了从基础概念到高级应用的...

    Visual C++ 面向对象编程教程——王育坚

    《Visual C++ 面向对象编程教程——王育坚》是一本专为学习MFC(Microsoft Foundation Classes)和面向对象编程技术而设计的教学资料。该教程以幻灯片的形式呈现,结合实例与详细的讲解,使得学习过程更为直观且易于...

    c++课程设计报告材料——通讯录.doc

    c++课程设计报告材料——通讯录.doc

    C_C++_Java_Python——API

    以上是关于C、C++、Java和Python中API的基本介绍,实际的"**C_C++_Java_Python——API**"压缩包可能包含更详细的示例、教程或库的文档,进一步学习这些内容将有助于提升你在这些语言中的API使用技能。

    《C++Builder5程序设计——数据库应用实务篇》程序源代码

    《C++Builder5程序设计——数据库应用实务篇》是一本专为C++Builder开发者深入学习数据库编程技术而编写的书籍。这本书的程序源代码包含了大量关于C++Builder5与数据库交互的实际示例,旨在帮助读者掌握如何利用C++...

    C++ Builder 5程序设计——数据库应用实务篇

    C++ Builder 5是 Borland 公司推出的一款集成开发环境(IDE),它结合了C++语言的高效性和Visual Component Library(VCL)的图形用户界面(GUI)开发能力,特别适合快速开发Windows应用程序,尤其是数据库应用。...

    C++Builder程序设计范例——中国象棋

    《C++Builder程序设计范例——中国象棋》是一份详尽的教程,旨在引导学习者使用C++Builder开发一个完整的中国象棋游戏。通过这个项目,你可以深入了解C++Builder的编程理念,以及如何利用其强大的VCL(Visual ...

    比较全的C++类库

    C++类库,很好用,非常全的C++类库,C++各大有名库的介绍

    C 面向对象程序设计——基础、数据结构与编程思想 (第4版)

    C++面向对象程序设计——基础、数据结构与编程思想 (第4版)

    《C++Builder5程序设计——基础教学篇》程序源代码

    《C++Builder5程序设计——基础教学篇》是一本针对初学者的教程,旨在帮助读者掌握C++Builder5这一强大的集成开发环境(IDE)进行C++编程的基础知识。该书的程序源代码提供了丰富的实例,涵盖了C++Builder5的基础...

    子序列和 c++ dfs(csdn)————程序.pdf

    子序列和 C++ DFS(CSdn)————程序 在这份文件中,我们可以提取出以下知识点: 1. 子序列问题:给定整数 a1、a2、…an,推断能否从中选出若干数,使它们的和恰好为 k。这是一个经典的子序列问题,要求我们找到...

    毕设项目:基于C++、QT实现的带GUI的图书管理系统.zip

    毕设项目:基于C++、QT实现的带GUI的图书管理系统 毕设项目:基于C++、QT实现的带GUI的图书管理系统 毕设项目:基于C++、QT实现的带GUI的图书管理系统 毕设项目:基于C++、QT实现的带GUI的图书管理系统 毕设项目:...

Global site tag (gtag.js) - Google Analytics