我希望为我的应用程序制作GUI。它应该在多个平台上运行。我希望大部分代码都可以在所有操作系统(Unix,Windows,MAC)上进行移植。
GTK和GLib看起来是一个不错的解决方案。我也想使用本地API。
如何做到这一点?
GTK和GLib看起来是一个不错的解决方案。我也想使用本地API。
如何做到这一点?
另一个更轻量级的选择是FLTK。
您需要实现一个PAL(平台抽象层)。
该层应通过提供不依赖于特定平台的接口来对实际平台调用进行抽象。一旦您切换到另一个平台,只需为该特定平台实现PAL即可,其余应用程序可以按原样使用。
Qt似乎是一个选项。但如果你想使用Windows API,它将不具备可移植性。在Windows中,Qt将使用像CreateWindow等的东西,但你不会。例如,反汇编器IDA最近被重写为Qt,并且现在是跨平台的。
我认为学习每个你要针对的平台的本地窗口层是值得的。
因此:
我个人不喜欢QT,因为他们发明了自己的元编译器,使得QT代码(具有讽刺意味的是)难以移植到非QT环境中。但是QT在可能的情况下提供本地部件集的抽象。
wxWidgets是一种方便的包装API,因为它已经在相关平台上包装了Win32Api、Cocoa API和GTK+。然而,我避免使用它,因为Wx基于微软MFC-一种有些过时的文档/视图C++框架,我想要理解底层平台。