GUI编程c ++或c#

我正在大学攻读软件工程课程。 我只是采用了数据结构,我几乎完成了设计模式。 通过设计模式类,教师可以让我们选择要使用的语言以及在我们的实验室中使用的IDE。 因为,我知道C ++主要使用它。 大多数类使用c#,有些使用java ..

好吧,我刚刚报名参加GUI编程春季学期,并且是同一位老师,他说我们可以使用我们喜欢的任何东西。 既然,我从未真正使用过C#,那么使用c ++会更好吗? 我已经研究过使用QT4,但我不知道它有多难,有多少帮助真的在那里? 因为,不会有太多的讲课..

我正在考虑使用C#,因为我已经在VB.NET中学习了类并且使用了winforms。 但是,我很想用C ++你有什么想法? c ++ gui是我将来可能在现实世界中使用的东西吗? 或者我最好不要尝试学习C#我会喜欢在我的职业道路上坚持使用C ++。

我也不想同时学习C#和GUI。 QT4是一个好方法吗?

qt并不难以使用。 我已经尝试了一些用于c ++的gui工具包,这是我在c ++方面的经验

Qt的

对于c ++开发和gui,我绝大多数赞成Qt而不是替代库,如win32 api,Microsoft基础类等。

好处

  • qt是跨平台的,可以在windows,linux,symbian,windows ce,mac osx上使用
  • qt并不难理解。 如果您了解c ++类的基础知识和一些模板编程
  • qt用于专业创建guis。 我不记得确切,但我认为Autodesk maya和adobe photoshop可能正在使用qt作为他们的gui’s
  • qt4不仅仅是gui编程,即它拥有用于网络,国际化,video和音频的声子,动画框架等的库。

缺点

  • 它不是一个原生库,所以你的应用程序会比你使用win32 api更大但是即便如此我还是认为它的运行时间小于.net

现在开始学习qt

  • 找到使用qt4第二版的c ++ gui编程书。 或另一个好资源
  • 下载visual studio 2008的qt sdk
  • 下载适用于visual studio 2008的qt visual studio addin
  • 创建一个新的qt4项目并编译并运行您的第一个项目

C#

我应该从一开始就说我不是交流#开发者,但我知道它有一些好东西

已知的优点

  • 允许您使用Windows窗体,wpf,linq(语言集成查询)等
  • 作为ac#developer,你最感兴趣的是wpf

缺点

  • 与所有.net语言一样,它仍然比用c ++制作的本机应用程序慢
  • 不能移植到不同的操作系统,如mac osx,linux(但请记住大多数用户(90%)正在运行WINDOWS)
  • 如果你的目标是windows xp的用户,那么你必须下载.net才能让你的应用程序运行起来不方便。 对我来说,这是.net语言的最大缺点,因为我知道大多数用户的互联网连接速度很慢

使用c#开始学习gui开发

  • 找到本书windows演示基础释放或任何好的c#/ wpf书

警告

  • 我不是c ++或c#的专家,我只是给出我的意见或经验。
  • 我在c#的经验有限

我正在考虑使用C#,因为我已经在VB.NET中学习了类并且使用了winforms。 但是,我很想用C ++你有什么想法?

如果要使用Windows窗体和C ++,则可以使用C ++ / CLI(以前称为托管C ++)。 这使用C ++扩展来支持.NET,并且是唯一允许混合CLI和本机代码的.NET语言,因此一旦将接口代码粘贴到应用程序代码,就可以专门使用ISO C ++。

除了我已经实现了现有C ++代码的接口之外,我发现简单地学习C#是更容易的,它是从头开始设计成.NET语言的,因此通常更舒适。

在ISO C ++领域,选择包括Qt和WxWidgets,这两者都是跨平台的,并且得到书籍和在线信息和社区的良好支持。

我之前使用过WxWidgets (C ++)。 这很简单有趣。 Afaik,大量的UI设计是由设计编辑器或各种XML / LUA导入器完成的,因此您使用的工具包实际上并不重要,因为您将编写的事件驱动代码对于几乎所有内容都非常相似。

WxWidgets教程很棒,论坛也很有帮助。 如果您想知道WxWidgets与其他工具包的比较,他们有一个很棒的维基页面专用于它

另一个问题的答案可以争论永恒的时间。 根据我的经验,我会说两种语言都有同样成熟的工具包来创建用户界面。

因此,对于任何项目,它只取决于您的偏好。 通常,由于Visual Studio提供了出色的RAD支持,因此使用.NET开发UI变得更加容易,遗憾的是,它不能为基于C ++的项目提供那种复杂程度。

话虽如此,请记住所有操作系统上都存在用户界面; 不只是Windows。 因此,您应该专注于GUI编程的基本原则,并将语言仅视为将您的想法付诸实施的一种手段。

因此,如果您真的想在所有平台上进行UI编程; 那么C ++是最好的选择(当然这些天你有Mono但不确定他们是否有你正在研究的基于QT的工具包)。

相当一口 – 但要简短:这完全取决于你的选择和学习。 如果你想学习C#并使用它继续。 但是如果你对C ++感到满意,你仍然可以使用它,并且在C#中无法做任何事情,但是无法使用C ++完成。

好吧,我不可能给Dr.Deo一个更好的答案,但我可以分享一下。 我曾经做过很多GUI编程(超过5年前,Borland的VCL在Delphi或C ++中)。 我最近不得不为一个小项目制作一个GUI,所以我去了Qt4。 在没有任何Qt4知识的情况下,我几天就能完全完成GUI(当然,这是一个简单的单窗口GUI)。 我发现它很容易使用和快速学习。 如果您有任何GUI体验,那将非常直观。 至于所需的C ++知识,它是最小的。 您必须对相当大的inheritance和多态性感到满意,但这是非常典型的GUI工具,它实际上只是OOP的基本C ++知识。

我想有几个人已经提出了跨平台的观点。 这将在未来变得越来越重要,因为Windows的替代品正在成为主流(基本上我与之合作的所有人都拥有Mac或运行Linux发行版)以及更多中间的手机和平板电脑产品正在兴起。

而且,无论如何,用于编程GUI的语言并不是那么重要,它是工具集。 我认为Qt4非常完整。 它还为您节省了与现有代码接口的麻烦(更不用说学习C#了)。 最后,Qt4非常适用于任何IDE或构建系统(如果您不想将代码切换到qmake和/或Qt-Creator)。

这取决于你想要学习什么。

如果您想了解GUI库的工作方式而不是如何使用它们,那么您需要查看普通的Win32。

如果你想学习如何使用它们,你会发现C#或VB与WinForms最容易上手。 当然,他们让你使用一个伟大的设计师。

在学习基础知识的同时,不要担心跨平台等问题! 您应该专注于学习原则而不是具体细节。

正如@David Heffernan所说,除非你必须拥有它(过早优化),否则不要担心跨平台。 大多数跨平台套件提供的灵活性需要付出代价。 此外,根据我多年作为开发人员和用户的经验,本机平台工具包通常提供更好的最终用户体验(通常不会出现关于允许用户的内容和方式以及不允许对每个控件或表面执行操作的惊喜)。

在学习环境中,您想要考虑您希望在一个学期中完成的任务。 一个典型的三个月的整个学期计划与连续的里程碑表明你会想要低摩擦。 学习gui库可能是一项了不起的成就,但在开始之前,您可能希望至少基本熟悉环境或上下文,以便及时实际完成中间任务:可能是交互和其他一般用户体验是课程重点的核心。

出于这些原因,我会考虑坚持使用c ++,因为您对语言和工具的范式和基础知识有所了解。 但是,因为它是一个学习环境,我会强烈考虑一些不那么主流的东西,但在图书馆中有成熟的潜力。 我可能会看一下硬件加速窗口库,如果定位到unix / linux,可以是基于OpenGl的xgl,也可以是针对Windows的Windows Presentation Foundation。

对于GUI编程,您可以使用Visual C ++。

在VC ++中编写所有代码很难,所以人们会选择MFC。 MFC提供100种课程,使生活更轻松。 所以你需要做的就是学习VC ++的基础知识并学习MFC。