抛光UI桌面应用程序,哪个UI库可供选择?

时间:2009-11-04 20:39:34

标签: c# c++ user-interface mfc qt4

我是MFC程序员很长时间并且非常了解它。最近我们正在计划一个大型桌面应用程序。为了击败竞争,一个要求是抛光UI。我们将选择范围缩小到三个:

  1. WinForms
  2. MFC
  3. QT4
  4. 我们查看了一些大型WinForms应用程序,例如Paint.Net,并认为它仍然缺乏性能。启动需要一段时间,一些UI部分看起来不太好。

    我们对QT4寄予厚望,但在编写了几个程序之后,我们发现QT4应用程序的外观与本机Windows UI不相上下。它看起来仍然不同。我们还担心缺少小部件(例如,库中的颜色选择器和日历控件非常糟糕)。

    MFC是一个安全的选择,尤其是Codejock.com的组件。使用codeJock工具包,UI界面看起来非常精致。所有需要的小部件都在那里。问题是它的编码风格已经过时了。

    您将为下一个桌面应用程序选择什么?

8 个答案:

答案 0 :(得分:10)

WinForms现在已经有效了。你应该看看WPF。

有关一些不错的示例的链接,请参阅WPF: Any cool UI ideas i can look at?

答案 1 :(得分:1)

如果您了解MFC(它仍然基于核心Win32概念,那么WinForms很容易进入,因此您不需要学习太多东西来加快速度)。与MFC相比,您可以更快地开发更多,并且有更多的库支持.net中的所有内容,您必须自己编写或在MFC中找到第三方库。我经常发现.net解决一个大问题的解决方案是大约3到10行代码,而等效的MFC解决方案则是数百或数千行。我现在甚至不认为MFC是首发,因为我在C#中使用了WinForms。

我们正在构建一些非常大的C#应用​​程序,性能非常好。如果程序的任何一小部分对性能至关重要,那么很容易插入一些非托管C ++。我发现在早期的XP中创业时间非常糟糕,但是最新的.nets和Vista,启动时间与MFC应用程序相当。

所以我至少要去WinForms / .net。 WPF也是一种明智的面向未来的方法。

答案 2 :(得分:1)

如果你有设计技巧或者可以要求某人美化你的用户界面,那么WPF是个不错的选择。我认为这绝对是最通用的选择之一。

您还可以使用DevExpress或Telerik等组件,它们都具有广泛的WinForms控件库以及最近的WPF控件。我自己使用过DevExpress,对外观很满意。虽然这些库并不便宜,但它们确实具有很多功能。

我从未使用过QT4,所以无法判断。

答案 3 :(得分:1)

对于我的下一个桌面应用程序,我会使用:

Windows上的


可能是老式的Windows API(没有MFC),因为我对它很熟悉 也许Qt,因为我想尝试一下。

Mac OSX上的

:Cocoa

Linux上的

:Qt

答案 4 :(得分:1)

并不是说我非常喜欢MFC,但如果你对它感到满意,请继续。它不会很快消失,虽然肯定不会像WPF那样更新和改进。

答案 5 :(得分:1)

花了12年多的时间开发MFC应用程序,现在使用WPF不到一年,我就没办法回到MFC了。在之前的雇主中,我们将花费无数个小时来定制UI行为并获得正确的图形外观,这在WPF中只需要一小部分时间。更不用说能够使用UI作为XAML(XML)而不是相当过时的资源编辑器的灵活性。

如果你的应用程序必须是C ++(而不是C#),那么我认为使用WPF会更加重要。我没有在C ++中完成.NET,但是我记得这些概述将它作为相当多的额外工作。

答案 6 :(得分:0)

我们的工作目前正在从VB6改进GUI应用程序,使其看起来“更漂亮”。我们已经为我们的升级选择了.NET winforms平台,因为我们的大多数编码人员都熟悉它。 .NET有一些专用于图形的库,并且已经在库中内置了各种漂亮的用户控件。除此之外,还有很多很多定制的控件,比如ComponentONE库,并且有很多开源控件供企业使用,看起来也不错(你可以免费搜索CodeProject.com的文章部分,可下载的控件看起来非常vista / windows 7-esk)。

该框架本身也可以对Windows进行双重缓冲,并且具有bufferedGraphics类,如果您愿意,可以使用这些类来手动处理双缓冲。

然而,当处理高分辨率图像作为背景图片时,Windows窗体仍然是幽灵,真正修复它的唯一方法似乎是使用DirectX库使用机器上的图形硬件进行绘制(这很困难,但是至少它的免费)。

希望这有助于您在平台上做出决定,形成Windows窗体。

答案 7 :(得分:0)

我仍然会考虑MFC。它远没有死,尤其是新的2008功能包。您将获得大量更新,现在可以创建那些精美的功能区UI元素。如果你已经知道MFC,那么你就会知道陷阱(旧的但有些仍然存在)并且可以很快地完成工作。

你可以为MFC购买大量的UI组件,并且它具有与速度相当接近金属的好处。您的最终用户无需安装框架或其他任何内容。

我为我的日常工作编写C#,但我的所有个人项目都是MFC / C ++,因为它们不需要我的用户安装其他框架,库等。