GUI编程c ++或c#

时间:2011-02-19 05:13:53

标签: c# c++ user-interface

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

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

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

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

8 个答案:

答案 0 :(得分:22)

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编程,即它拥有用于网络,国际化,视频和音频的声子,动画框架等的库。

缺点

  • 它不是本机库,所以你的应用程序会比你使用win32 api更大,但即便如此我仍然认为它比.net运行时间小

立即开始学习qt

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

C#

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

已知优势

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

缺点

  • 与所有.net语言一样,它仍然比c ++中的本机应用程序慢
  • 不能移植到不同的操作系统,如mac osx,linux(但请记住大多数用户(90%)正在运行WINDOWS)
  • 如果您定位的是Windows XP的用户,则必须下载.net才能让您的应用程序正常工作。对我来说,这是.net语言的最大缺点,因为我认识的大多数用户都有慢速的互联网连接

使用c#

开始学习gui开发
  • 找到书籍展示基础发布或任何好的c#/ wpf书

警告

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

答案 1 :(得分:5)

  

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

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

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

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

答案 2 :(得分:3)

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

WxWidgets教程很棒,论坛也很有帮助。如果您想知道WxWidgets与其他工具包的比较,他们会有great wiki page dedicated to it

答案 3 :(得分:1)

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

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

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

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

非常满口 - 但为了做空: 这完全取决于您的选择和学习。如果你想学习C#并使用它继续。但是如果你对C ++感到满意,你仍然可以使用它,并且在C#中没有什么可以做的,但是不能用C ++完成。

答案 4 :(得分:1)

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

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

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

答案 5 :(得分:1)

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

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

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

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

答案 6 :(得分:1)

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

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

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

答案 7 :(得分:-3)

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

很难在VC ++中对所有内容进行编码,因此人们会使用MFC。 MFC提供100种课程,使生活更轻松。所以你需要做的就是学习VC ++的基础知识并学习MFC。