wxWidgets是一个开源的跨平台C框架,可以提供GUI(图形用户界面)等工具。
目前的2.x版本支持所有版本的Windows,Unix与GTK或Motif和MacOS。支持OS/2的版本正在开发中。
WxWidgets Toolkit为开发图形用户界面(GUI)提供了一些强大的跨平台工具。除了native C之外,还有其他几种语言提供了使用该工具包所需的包装器。
本文将介绍如何使用wxWidgets工具包以所选的编程语言创建通用的GUI。
wxWidgets的一些基础知识:
1、wxWidgets不仅仅使用c,而且能够使用python、perl、java、lua、eiffel、C# .NET)、basic、ruby、
甚至javascript(见通用资料)(豆子:有些语言连听都没听过,呵呵);
2.wxWidgets是一个完整的GUI工具库,有很多工具类;
3.文档很多(虽然有些只是文档碎片);
4.免费供个人使用或商业使用;
5.只要有可能,wxWidgets将使用本地平台的SDK。也就是说,同一段代码在Windows下编译时会有Windows程序的外观,在Linux下编译时会有Linux程序的外观。
6.这样做的好处是wxWidgets程序看起来和本地程序差不多,有时候会有一些本地组件行为——。例如,OS X上的所有文本区域都将获得内置的拼写检查功能;
7.这样做的缺点是不同平台上wxWidgets程序的行为可能不一致;使用轻量级组件的GUI库可能会丢失一些特定于平台的特性,但是会最小化与平台相关的代码(因此,
这样做还可以最小化不同平台组件的行为差异,减少特定平台的bug。此外,由于使用本地感官风格,wxWidgets不适合开发希望拥有与系统不同的界面风格的程序。
wxwidgets和其他一些主流库的比较 wxwidgets vs MFC:这两种风格非常相似。源代码里用了很多宏定义,所以我不在乎是谁模仿的。反正熟悉MFC的人应该对wxwidgets感觉不错。
MFC中广泛使用虚函数,wxwidgets中广泛使用重载。理论上,wxwidgets比MFC更高效。MFC只能支持windows,很难适用于linux。
Wxwidgets vs QT:我在学习linux的图形界面开发的时候,很犹豫要不要学习QT。最终我选择了wxwidgets。这主要是因为公司选择了这个。如果我必须做QT,我会变成一个人。多无聊啊。
QT的优点也比较多:
1.最受支持的平台
2.商业化支持
3.完整的文档和RAD工具
4.最面向对象的
5.全球最成功的手机厂商支持,对移动终端的支持最完善的Qt的缺点:。
1.使用了非标准C语言
2.每个平台都不是“本地GUI”
3. 过于庞大且运行缓慢
4. 与其它库不是很兼容(主要是STL之类的兼容问题)
5. 基本只能使用特定的qmake工具(其它工具经过良好的修改也可以,不过相当于重新编写一个qmake,是否值得)
6.许可协议的话是做挣钱的程序的话是需要付费的,这一条很不爽。
另外linux下面的GTK也是跨平台的,但是它是C语言的封装,使用起来不是方便,基于以上原因我选择了wxwidgets,尽管它有以下明显的缺陷:
1. 由于是偏MFC,则面向对象封装做得不是非常好
2. 相对缺乏的文档、资源。资源方面是相当的匮乏,从google上搜索基本就能看出使用这个库的人是相当少啊,学习难度相对来说也大一些。
3. 缺乏很好的商业化支持,如果商业软件出问题需要支持,稍微麻烦点
优势 那么wxwidgets有什么特别之处呢?比起其他的跨平台gui库,有什么好处呢?
1、(不得不放在第一位的)就是他无论对于个人还是对于商业应用都是免费的!
——它的主体框架的授权协议支持商业免费应用,其外围功能库中很多也是lgpl授权的,这无疑对于我等“0资本”的人来说是天大的好事。不同于Qt之类的跨平台gui库。
2、 他是跨平台的gui库,支持的操作系统很全面,甚至支持pda(说不定过一段时间他都能够支持symbian了)(最新版本【3.0.1】支持iOS,
可以在下载的源码包中找到wxWidgets-3.0.1.tar.bz2\wxWidgets-3.0.1\build\osx
\wxiphone.xcodeproj)。
—— 此跨平台非彼跨平台,它虽然不像java那样是“全面”的,而仅仅是gui库,但是gui是计算机编程中,最为麻烦、耗费时间、容易出现bug的部分,
特别当你想要自己的软件运行在多个操作系统上的时候,开发和维护的难度让人难
以想象。其实c++也是支持“跨平台”的,因为c++可以在任何平台上编译运行,之所以没几个人说他是跨平台的,主要问题就出在变量长度和各操作系统的gui(这里的“界面”我指得是很广义的)上,
如果解决了gui的问题,基本上就
解决了c++的“跨平台”问题——至少不用为每种平台都维护一份源代码了。
3、 wxwidgets提供的gui是大量使用宏的,这就意味着它是在尽可能的使用目标系统native的gui样式。
——你可以访问wxwidgets网站,看看那些开发的软件的截图,全是系统native级别的。如果你开发了一个xp系统的软件的话,你的软件会仍然以“xp专有的‘小贱人’级别”的面貌展现在你面前。
4、 它支持的编译器也很多,而且borland也曾声明将在c++builderx2里边提供对wxidgets的支持——预览版都出来了。
——其实我就是看到borland在c++不景气的时候,这么看重这个东东,甚至用它来做“王牌”,才开始注意到他的。当然,反过来,也正是borland的支持,才使他活力大发的。
5、 自然,有牛X支持,而且是开源的,wxwidgets一直都在快速稳健的开发中,其周边工具也越来越多。
—— 随着MS开始全力支持他的.net,c++成了“没落”的语言,但是不可否认,c++还是有很多用武之地的,所以根本不可能真正没落。没有了超牛X的支持,地球人自然开始寻求新的发展方式,
wxwidgets这种开源免费,且允许商业应用的好东东,自然会被人们所重视。
wxWidgets支持的平台
wxGTK:Linux和其他Unix版本的推荐端口,使用GTK + 2.6或更高版本。
wxMSW:用于32位和64位Windows版本的端口,包括Windows XP,Vista,7,8和10。
wxMac:用于在Mac OS X 10.2到10.6上提供Carbon应用程序。
wxOSX/Carbon:用于在Mac OS X 10.5及更高版本上提供32位基于Carbon的应用程序。
wxOSX/Cocoa:用于在Mac OS X 10.5及更高版本上提供32位和64位基于Cocoa的应用程序。
wxX11:用于Linux和Unix变量的端口,使用通用窗口小部件集定位X11。
wxMotif:使用OpenMotif或Lesstif部件集的Linux和Unix变量的端口。
-
可以插原神人物的游戏手游 2025-10-12
-
仙剑奇侠传4结局官方解释?仙剑四结局深度解析 2025-10-12
-
lpl各战队主场城市 2025-10-12
-
魔兽世界怀旧服锻造分支怎么选择60年代分支选择推荐 2025-10-12
-
仙剑奇侠传4演员名单(仙剑奇侠传4四大主角) 2025-10-12
-
仙剑奇侠传4演员表曝光(仙剑奇侠传4人物详细信息) 2025-10-12