跨平台的图形用户界面 (GUI)

7
我希望为我的应用程序制作GUI。它应该在多个平台上运行。我希望大部分代码都可以在所有操作系统(Unix,Windows,MAC)上进行移植。
GTK和GLib看起来是一个不错的解决方案。我也想使用本地API。
如何做到这一点?

HTML5被滥用怎么样? - Alexey Frunze
有什么方法可以用HTML开发Windows GUI界面吗?有任何示例吗? - user739711
当然。HTML,JavaScript,CSS,HTML5的画布等等足够了。我见过一些产品在GUI中包含了一个网页浏览器。 - Alexey Frunze
6个回答

11

Qt 或许适合这种情况。


5

3

您需要实现一个PAL平台抽象层)。
该层应通过提供不依赖于特定平台的接口来对实际平台调用进行抽象。一旦您切换到另一个平台,只需为该特定平台实现PAL即可,其余应用程序可以按原样使用。


1
这不是WxWidgets、QT等提供的吗? - Christoffer
嗨Als,感谢您的帮助。您能告诉我使用PAL技术的任何示例代码(或应用程序)吗? - user739711
@user739711: 大多数软件都实现了PAL,这是一种常见的做法。正如@Christoffer所指出的,WxWidgets和QT在GUI方面已经做到了同样的事情。PAL主要在中间件级别上实现,在中间件和操作系统系统调用之间。 - Alok Save

1

Qt似乎是一个选项。但如果你想使用Windows API,它将不具备可移植性。在Windows中,Qt将使用像CreateWindow等的东西,但你不会。例如,反汇编器IDA最近被重写为Qt,并且现在是跨平台的。


1

我认为学习每个你要针对的平台的本地窗口层是值得的。

因此:

  • Cocoa
    Cocoa是本地的Mac OS X窗口层。它是一个Objective-C API,但它不难学习,并且很容易与C或C++互操作。
  • Win32 API
    Windows API是实现Windows本地部件集的C API。
  • GTK+
    Unix/Linux的世界更加复杂,因为可以编写针对完全不同部件集实现的应用程序。您需要选择目标环境默认桌面使用的部件集:如果您的目标是Ubuntu,则GTK+(2)是API,可用于访问Unity桌面的“本地”部件集。

我个人不喜欢QT,因为他们发明了自己的元编译器,使得QT代码(具有讽刺意味的是)难以移植到非QT环境中。但是QT在可能的情况下提供本地部件集的抽象。

wxWidgets是一种方便的包装API,因为它已经在相关平台上包装了Win32Api、Cocoa API和GTK+。然而,我避免使用它,因为Wx基于微软MFC-一种有些过时的文档/视图C++框架,我想要理解底层平台。


  • 在QT方面进行了一些更正后进行编辑。

你错了;Qt现在使用本地的小部件集,不再有仿真,只有一个抽象层。而且Qt在Linux上与GTK+一样本地化。 - rubenvb

0
请看一下Qt框架。这将帮助您创建跨平台GUI应用程序。您必须依赖Qt提供的API来完成本地平台任务,否则如果您继续使用本地API,您的代码将无法移植。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接