首先,我知道这是一个常见的问题,但我找不到我想要的确切答案。
我使用Swing在Java中完成了很多项目。从编写GUI开始,然后转移到GUI设计器。事实证明,这是构建GUI应用程序的非常快速简便的方法。
但是现在,我需要转向C ++。我正在开始一个使用大量硬件资源的项目(DirectX,OpenCV等......)我知道有这些技术的Java库。但是,考虑到这个项目的内部结构,C ++绝对是正确的方法。
我非常了解MCU编程中的C和C ++语言。另外,我已经阅读了许多关于本机WinAPI编程,Windows内部等的文章。我认为我有足够的知识可以开始。我不想担心GUI设计,但它看起来应该合适。
我知道有几个基本选项:Pure WinAPI,MFC,WTL,Qt ......如果有某种GUI设计工具,我会很高兴,但是从我的研究来看,没有。有一个MFC向导,它有助于创建一个基本窗口,但它不是一个设计师。我找到的最接近的是Qt。但是从我读到的内容来看,它并没有使用WinAPI进行绘图,因为将来Qt编写的应用程序的外观和感觉可能与本机Windows外观不同。
因此,总而言之,如果您有使用GUI创建本机Windows C ++应用程序的经验,您会向我推荐什么?具体来说,我错过了任何工具或设计师吗?
(我正在使用Visual Studio 2010专业版,因为我有免费的DreamSpark项目)
答案 0 :(得分:9)
我最近使用Qt4并对API非常满意。我发现它很简单,文档齐全,而且代码非常简洁。
Qt在模拟目标操作系统外观方面表现非常出色(正如@In silico在评论中指出的那样,Qt实际上是自己绘制所有内容并且不使用本机组件)无论如何,这可以通过他们的IDE Qt Creator中的GUI编辑器手动或可视地编码。如果你走这条路,我建议你在那里创建初始GUI项目(.pro
文件),然后通过Qt Visual Studio Add-In将其导入Visual Studio。
Slots and signals也值得一提。是的,它对GUI编程至关重要,但在低级代码中也非常有用。
我希望Qt在您的项目中运作良好,但一如既往,创建一些简单的测试以确保技术可行地协同工作。
答案 1 :(得分:3)
您可以使用C++Builder XE2(Rad Studio IDE的一部分),其中包括VCL(可视化组件库),VCL是Windows控件的包装器(还包括自定义控件),可以增加发展生产力。
答案 2 :(得分:3)
以下是一些提示:
不要将自己锁定在C ++中。 C#和Java(例如)可以很容易地与C / C ++交互。 (通过前者的PInvoke或C ++ / CLI和后者的JNI)。 C ++可能不是快速编写GUI的理想语言。
您对“原生窗口外观”的要求是任意的,您应该考虑一下。这真的是你需要的吗?
的Winforms。这是一项较旧的技术,但仍被广泛使用。您可以使用C ++ / CLI或C#(或任何.NET)语言的API。
WPF,一个更新的API,但从C ++开始处理起来会更困难(使用C#或VB更好)
市面上有许多具有C或C ++ API(QT,GTK,wxWidgets,VCL,...... list here)的GUI工具包之一。有些人有“原生”外观,有些则没有。有些设计师有些人没有。有些是免费的,有些则不是。
答案 3 :(得分:3)
如果您需要简单的用户界面,我建议使用WTL - 是简单,轻量级,仅限标头的库,是WinAPI的非常好的包装器。在Visual Studio中,您可以使用表单设计器来创建窗口并使用WTL类来实现与用户的交互。 WTL的文档很差,但WTL看起来像MFC。
如果你想要丰富的可能性我推荐使用Qt。它是非常强大的GUI框架,拥有出色的社区。 p>
答案 4 :(得分:3)
wxWidgets c ++类库附带screen builder。
答案 5 :(得分:2)
VCL是一个很好的方式。它有一个GUI设计工具(Embarcadero Rad Studio XE6),完全是C ++和Delphi的原生gui开发人员
答案 6 :(得分:1)
根据您的定义的严格程度,您可以使用.NET Windows Forms或Windows Presentation Foundation,并从C ++,C ++ / CLI和C#中插入逻辑。那不是纯粹的C ++解决方案。事实上,在这种情况下,我甚至不一定建议使用C ++。简单地使用C#将更直观和可维护。 WinForms和WPF虽然拥有非常出色的GUI设计师。