我在c ++中用Boost写了一个小程序。它工作正常,所以我想给它一个图形界面,以便它更容易使用。 为了做到这一点,我正在寻找提供原生外观和感觉的小型跨平台框架。 Windows和Linux支持就足够了,目前我不需要os x ...
我在其他项目中使用了wxWidgets,但设置一切并用软件运送这个大型库是一件痛苦的事。 但我真的对使用真正的原生控件感到惊讶。为了保持程序小,我也尝试了fltk,但它看起来很糟糕。
我只需要一个没有网络支持或其他噱头的简单框架。
所以我的问题是:有没有符合所有要求的框架?或者如果没有,哪些框架至少符合这些需求中的一部分?
提前致谢!
当它的名字中有“框架”这个词时,它几乎从不小。
无论如何,图形框架/库往往很大,因为他们需要处理很多东西。
Qt可能是跨平台GUI最好的直接库,但它绝对不构成“小框架”。另一方面,在Linux系统上,很可能已经安装了Qt。此外,它肯定支付其大小。
就gui工具包而言,wxwidgets相当小。
它是跨平台的
你已经提到了它,但就跨平台工具包来说,它是我见过的最小的工具包之一。
我唯一的另一个建议是,您可以将代码包装到C库中并将其链接到另一种语言。例如在Windows上使用.NET,在Linux上使用单声道,甚至是基于java的应用程序(尽管它们看起来并不总是非常原生于平台)。然后从那里使用你的库。
Ultimate++可能包含您需要的东西。 (虽然他们在常见问题解答中听起来好像他们的图书馆真的很大,但对我来说似乎并不坏。)
别忘了检查juce
Qt效果惊人,但不是很小。我发现真正缺乏“小”的跨平台GUI。您可能尝试在整个地方用#ifdefs抽象GUI,或者使用Qt / wx。
如果你想要它很小,只需编写两次GUI - 一次在MFC中,然后在X中。你的GUI听起来很简单。构建您自己的小抽象,这正是您所需要的。
像其他提到的那样,你不能在同一句话中混合“跨平台”和小尺寸。
更多的工作,更小的尺寸:我可以建议的一个解决方案是对UI部分使用本机python绑定。由于你已经在使用boost,所以让Boost.Python在C ++空间和python空间之间进行通信应该是相当简单的。您已经在Linux上安装了python,在Windows上安装了一个20-40MB的软件包(不记得最新版本有多大)。但是在这里你将不得不在windows上使用win32绑定并在linux上使用gtk / qt绑定,因此需要做更多的工作。不,太多的工作需要维护,刮擦这个。
适度工作,体积较小但具有非原生控件:您可以尝试使用杂乱或freeglut来完成UI工作,但我个人没有使用它们,因此我不知道它们是否为您的应用提供完整的原生外观。但与wx或qt相比,它们的尺寸较小。
减少工作量,增加尺寸:如果你已经习惯了,请使用WxWidgets,否则我推荐Qt。
您还可以查看其他一些产品:http://en.wikipedia.org/wiki/List_of_widget_toolkits
杂乱:http://www.clutter-project.org/about FreeGLUT:http://freeglut.sourceforge.net
这里有一长串活跃和死亡的跨平台C ++ UI库:https://philippegroarke.com/posts/2018/c++_ui_solutions/它们中的一些很小并且具有原生外观。