我想为我正在编写的OCaml应用程序构建一个图形用户界面。我的第一个想法是使用GTK+。我希望我的应用程序能够在Mac,Linux,Windows上运行,具有自然的外观和感觉。我知道,虽然GTK+默认在Mac上使用X11 (看起来很糟糕),但gtk-osx-application使用的是quartz,看起来很自然,我刚刚用macports安装了它。
我有三个问题:
(1)在OCaml中使用gtk-osx-application +quartz+no_x11真的可行吗?(我的GODI安装之前(安装了基于x11的gtk2 )安装了lablgtk2,没有问题,现在(删除了gtk-osx-application +quartz+no_x11和以前的基于x11的gtk2 )抱怨找不到/opt/local/lib/libgtk-x11-2.0.0.dylib,这与x11相关。但是,据我所知,在通过GODI安装lablgtk2时,没有办法选择quartz而不是x11。)
(2)如果我使用gtk-osx-application在我的Mac上开发我的代码,我可以使用原样的代码在其他使用不同gtk的平台上编译吗,或者这会带来问题吗?
(3)如果它确实带来了问题,您是否知道在OCaml中开发GUI的其他环境可能在外观和感觉上都很好,并且仍然很容易交叉使用?(我知道labltk,但我更喜欢有更多功能的东西,例如,能够使用notebooks,也就是选项卡式面板,以及能够使用Glade进行快速GUI设计。)
谢谢你的帮助!
干杯,Surikator
发布于 2011-01-29 00:55:45
假设你能让lablgtk工作,这可能是你目前最好的选择。
要使其正常工作:在移除X11 GTK并安装Quartz GTK之后,您是否尝试过重建lablgtk?针对Quartz GTK构建的LablGTK自然不能在Quartz GTK上工作,因为它将链接到错误的库,但是重建可能会成功。也可能是LablGTK不能正确检测到X11集成调用不起作用,因此构建失败,但我希望这不会太难修复,因为LablGTK确实支持Windows。
如果您在Mac上为GTK开发代码,那么它应该可以在其他平台上正常工作。当然,您会想要测试它,但它应该可以工作。一定要小心使用GTK工具,以使对话框按钮顺序等功能正常工作。
我认为曾经有一组OCaml绑定到wxWidgets,但它们似乎没有被广泛使用,根据我的经验,使用wx是一件痛苦的事情。也有一些关于Qt绑定的工作,这将是很棒的,但我认为还没有任何项目在这方面取得良好进展。
如果UI只是项目的一小部分,您可以考虑将其与后端解耦,并使用Qt在C++中编写UI,或者编写平台原生UI,然后让UI在嵌入式运行时中调用OCaml代码来完成实际工作。但这可能需要更多工作,并且可能不会给您带来太多好处,具体取决于您的应用程序。
因此: GTK是当前环境下的最佳选择。
https://stackoverflow.com/questions/4827990
复制相似问题