如何为一个大型跨平台的C++项目编写GUI界面?

22

我有一个跨平台的C++项目(Linux和Windows),想要创建一个GUI界面。

针对这个项目,我有几个关于GUI基本原理的问题:

  1. GUI应该与应用程序逻辑分离吗?
  2. 如果它们是分离的,那么逻辑和GUI应该如何通信?TCP/IP套接字是一个好选择吗?还有其他可能性吗?
  3. 使用不同于C ++的语言编写GUI是否是个好主意?如果是,那么使用哪种语言?
  4. 使用基于浏览器的GUI是否是个好主意?
  5. 尽管项目的核心逻辑是跨平台的,但我可以决定GUI仅基于Windows (.NET?),并通过Socket或类似方法与相关Win/Linux机器上的逻辑进行通信。这样做是个好主意吗?

12
你考虑过使用Qt吗?http://qt.nokia.com/products - JRL
是的,我已经研究了Qt。这是其中之一的选择。 - Igor
12
尽管一些人无疑会试图回答你的问题,但实际上每一个问题的真正答案都是“视情况而定”。这些决策是应用架构的一部分,应由你或相关建筑师进行。你提供的只是大厦的一个钥匙孔视角,并要求结构建造建议,缺乏全貌,建议无疑会主观和不准确。我建议返回应用程序设计,寻找你所遇到的问题的解决方案,而不是从解决方案开始倒推。 - Lazarus
Mono也是一个选择。它是否成熟稳定?你认为它最适合我的需求吗? - Igor
1
@Igor,对于每个问题,你需要问自己/赞助商/关键利益相关者:“这对应用程序的实施和运营是否必要?”这是第一个依据。请记住,通常还需要考虑未来的因素,即单块应用程序现在可能符合您的要求,但未来可能不再适用。这里提供的信息不足以做出决策,如果有足够的信息,则需要比问答网站提供的更多帮助。可以阅读有关软件架构的所有内容或聘请架构师。就目前而言,“这取决于情况”就是每个问题的全部回答。 - Lazarus
显示剩余6条评论
11个回答

0

你已经得到了很多好答案,但我仍然会写出我的答案

GUI应该与应用程序的逻辑分离吗?

我认为这是最好的。这样在修改时可以更容易地处理它。此外,使用一个多平台并具有其他语言绑定的GUI框架,例如GTK+或Qt。

如果分离,逻辑和GUI应该如何通信?TCP/IP套接字是一个好的选择吗?还有其他可能性吗?

如果是本地通信,则套接字是一个不错的选择或通过线程。

将GUI放在不同于C++的语言中是否是个好主意?如果是,哪种语言?

我认为这不是最佳选择。如果可以的话,请为所有内容使用相同的语言。

将GUI设计为基于浏览器的是否是个好主意?

只要不太复杂就可以。我认为基于浏览器的GUI仅适用于协作工具或绝对独立于平台(每个操作系统都有浏览器),只要将主程序保持在服务器上。正如有人在上面所说的那样,如果您考虑制作Web GUI,请先考虑制作Web应用程序。

尽管项目的核心逻辑是跨平台的,但我可以决定GUI仅基于Windows (.NET?),并通过Socket或类似方法与相关Win/Linux机器上的逻辑进行通信。这样做是个好主意吗?

在我看来不是,它增加了复杂性,通常是不必要的,但如果你真的必须这样做,那么Socket是最好的选择。


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