如何最好地开始GUI C++编程?

3
所以,我学习了C++(基础知识),并想编写软件,但是我遇到了一个问题,不知道从哪里开始。当涉及到理解GUI构建库的概念时,学习C++似乎是迄今为止最容易的部分。我搜索了很多,甚至无法决定是MFC、Win32还是Qt。
Qt C++ GUI看起来像是一款有趣且易于使用的软件,其中类的定义就在那里很快地提供。
对于Visual的MFC,我会在预制项目文件中看到很多代码,以及对类的描述,但获取定义有点慢,因为我必须上网查找。
Win32显然是用C语言编写的,而且没有得到很多更新?
很多人也推荐Java和C#,但我不想在C++没有牢固掌握并练习足够的情况下学习一门新语言。
不确定如何着手处理这个问题。

2
我仍然建议使用C#和WinForms。从C++转换到C#非常容易。之所以建议使用C#和WinForms,是因为它允许您通过可视化拖放编辑器生成样板代码,同时使用C#连接逻辑。 - Sion Sheevok
1
@Sion Sheevok:但是C#和WinForms是一种限制(不仅仅是Win32)。 - Frunsi
1
@Sion Sheevok:或者C#和WPF! - Sapph
1
@Sion Sheevok。你也可以使用正确的工具在C++中完成这项任务,其中Qt就是其中之一。他问的是C++,为什么要提C#? - anno
3
因为我在评论,而不是回答问题。因为 C# 和 C++ 非常相似,学习它是很轻松的。因为他的担忧可能是没有根据的。因为你仍然可以在使用 C# 和 WinForms/WPF 的同时编写 C++ 代码。因为他问的是关于 MFC,这仍然是特定于 Windows 的,所以他并不关心跨平台性。 - Sion Sheevok
4个回答

9
如果您计划将程序移植到Windows以外的平台,或者您的实际用户界面需求相对简单,请选择Qt。但是,Qt作为一种“有趣”的工具,会让您远离Windows API。如果您发现需要访问Qt未提供的API功能,则可能会遇到麻烦。因此,如果您要在Windows上开发一个复杂的应用程序,或者需要更直接地访问Windows API的特定功能,请选择MFC。MFC为该API提供了一个薄的抽象层;它的概念与API的概念几乎一一对应。

你可以在Qt中随时访问Win32 API。 - anno

5
您想要什么类型的GUI? 任何框架都应该能够处理任何类型的GUI,但有些框架针对特定工作进行了优化:
- MFC优化制作编辑文本类的应用程序,例如MS Office程序Word、Excel和Powerpoint。 - wxWidgets和Qt(以及.NET WinForms和WPF)优化任何主要使用小部件(文本框、按钮、菜单)的应用程序。 - SDL针对您想绘制的内容进行了优化,例如图表或矢量艺术品。
我不推荐您使用MFC,因为它不适合大多数应用程序,并且没有使用现代C ++设计,它充满了解决早期版本的Visual C ++中出现问题所需的解决方法,现在由于向后兼容性而无法摆脱这些解决方法。
实际上,Win32 API非常有用,无论您想制作什么类型的应用程序,因为它定义了UI如何与系统的其余部分接口的规则。 是的,它是用C编写的,但这是为了使它可以从任何编程语言中使用,而不是因为它是过时的设计。 Win32 API高度面向对象,并广泛使用多态性。

2

需要注意的几点:

如果有一天你想要出售使用Qt编写的程序,你可能需要购买许可证。

如果你想在Windows平台上进行GUI应用程序/ GUI编程,最好学习WinForms,甚至更好的是WPF(当然要用C#)。

如果你只是想快速为你的C++程序创建简单的GUI界面以供学习,而不太关心学习框架和许可问题,那就选择Qt或wxWidgets吧。


@anno 我知道这一点。这就是为什么它没有说“你必须购买”,而是“你很可能需要购买”。既然看起来我伤害了一些Qt粉丝的感情,我会将其编辑为“你可能需要...” - m0s
负评:因为他询问了关于C++的问题,甚至明确排除了C#。 - Frunsi
4
我不同意这个踩赞。他并没有“明确地”排除C#,他提到他对学习C#不感兴趣,因为他担心在学习C#的同时学习C#会是不明智的。解决他的顾虑在任何方面都不是无关紧要、无效或不合适的。与此同时,他还评论了Qt和可能需要许可证的情况,这是选择任何第三方代码时重要的信息。 - Sion Sheevok

0

MFC已经过时了。如果你在Windows上坚持使用C++,我建议你学习C++ CLI。 不过,我建议你直接学习C#,因为C#是.Net世界中的主流语言。 对于GUI,Windows世界现在被WPF所主导。


4
除了微软以外,哪些应用程序使用WPF技术?".. dominated by WPF"的含义是什么? - Frunsi
1
只有微软使用 WPF 吗?以一个简单的例子,雅虎 Messenger 利用了 WPF,还有很多其他的应用也使用它。 - user496949

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