【问题标题】:Building simple GUI without resorting QT or .NET using native C++?使用原生 C++ 构建简单的 GUI 而不使用 QT 或 .NET?
【发布时间】:2014-01-18 04:14:44
【问题描述】:

是否有任何平台可以构建 GUI 平台而不使用原生 C++ 借助 QT 或 .NET?

QT 很酷,但是要花很多时间去学习,此外它还有很多我并不真正需要并且非常不喜欢 QT IDE 的东西,与 Visual Studio 相比(我知道你可以在 Visual Studio 中使用 QT )

.NET 也有同样的问题(其实我现在正在学习 C# 和 WPF,虽然看起来 WPF 更容易编程,你可以从 WPF 调用原生 C++ 代码)

我正在寻找的东西是:相对容易学习,不必具有高级功能,与 C++11 一起使用,支持 C++11 多线程,与 Visual Studio 一起使用。计划构建一些用于数值分析的应用程序。

【问题讨论】:

  • 您始终可以直接使用 Windows API(因为您显然只针对 Windows 平台)。例如。看看我以前的lessons
  • @Cheersandhth.-Alf 我一定会看看你的教程。谢谢!
  • GUI 编程可能确实有学习曲线。如果你认为 WPF 很难,Win32 API 可能会一团糟,更不用说旧世界可能(更好)被遗忘。

标签: c++ user-interface c++11


【解决方案1】:

在 VS 中有 很多 种不同程度的支持。

MFC 在 Visual Studio 中以代码生成器、向导等形式提供了相当多的直接支持。不幸的是,基本设计非常陈旧,并没有很好地老化全部。相当多的程序员不仅会而且确实引用它作为库的主要示例,如果人为可能,最好避免使用它。

WTL 是 Microsoft 的 other 类库,用于生成 Windows 应用程序。它是一种比 MFC 更新的设计,通常被认为更干净、更好。正如名称所暗示的那样,它大量基于模板,这有助于它生成的应用程序通常比 MFC 尝试的更小、更快。无论好坏,微软前段时间将其置于相当宽松的开源许可下,此后的更新非常少。尽管两者都来自 Microsoft,但 Visual Studio 从未为支持 WTL 开发做太多工作。

wxWidgets 开始时或多或少是微软 MFC 的克隆,但在 MFC 大部分停滞不前的情况下继续积极开发。它现在有很多功能(例如,基于 XML 的 UI 设计、布局管理器),远远超出了 MFC 曾经考虑过的任何功能。

Ultimate++ 是一个相当不寻常的工具包,它绘制了自己的路线(可以这么说),这与大多数其他人有很大不同。他们有自己的 IDE (TheIDE)。代码可以非常简单和简短,但与大多数典型的 C++ 不同,很多人一开始很难掌握(而且一些有经验的 C++ 程序员并不特别喜欢某些东西的工作方式)。

GTK+/gtkmm 与其说是一个 Windows 框架,不如说是一个 Linux 框架,它的便携性足以在 Windows 下工作。如果您专门(甚至主要)为 Windows 开发,这可能不是您的最佳选择。与大多数其他框架相比,这些框架也更加纯粹的 GUI 框架(即,它们不包括集合、网络、密码学等许多其他框架确实包含的东西)。

FLTK 是另一个跨平台工具包。它相当小而且速度很快,但有点像 GTK+,它看起来(至少在我看来)不像 Windows 工具包,而是一个恰好便携到可以在 Windows 上工作的 Linux 工具包(但结果看起来不像或感觉很像大多数 Windows 应用程序)。

Juce最初是用来开发一些音乐软件(Traktion)的,所以它包含了很多面向音乐的功能。它还有一些相当不寻常的小部件,大多数其他小部件都不包括在内(尤其是模仿您在各种音频设备上看到的控件的小部件)。尽管如此,它具有基本 GUI 功能的坚实核心,以及通常的“附加功能”,如网络、加密、XML 和 JSON 等。虽然我没有尝试过像全面审查代码那样做任何事情,但似乎写得比大多数人都好。

无论如何,这不是一个完整列表,但我认为它适用于大多数更流行/广泛使用的 GUI 工具包(当然 Qt 除外)。

【讨论】:

  • 为 wxWidgets 投票。您也可以使用一些工具(f.i. Codelite 中的 wxCrafter)来生成 GUI,相对容易使用。您可以轻松连接一些基本事件(菜单、表单等)。
【解决方案2】:

前段时间我问自己正是同样的问题。

我使用 C++/CLI 编写我的程序,这还不错(我的 C++ 代码与 GUI/CLI 部分很好地隔离),但与其他人共享可执行文件是一个问题:这是典型的 - 它运行在我的电脑(……仅限)。所以,我需要一个轻量级的替代科学计算中用户不友好的命令行程序,我可以轻松地分享它。
我现在很高兴使用 Nana。请加入 Nana 的用户和/或开发人员组,并...玩得开心!

GUI with Nana C++ Library

Nana C++ Library 的目标是易于使用和可移植的库。它 提供了一个 GUI 框架和线程,以便于现代编程 C++ 方法,例如特征、元编程和其他模板 技术。

【讨论】:

    【解决方案3】:

    由于您计划专门为 Windows 开发,我认为您应该继续使用 MS 提供的 GUI 工具包。虽然第三方工具包可能会提供您已经说过不需要的跨平台优势,但它们会增加复杂性和依赖性。

    例如,当发布新的 Visual Studio 时,您必须等待工具包支持新的 VS 和依赖项,这意味着要在目标系统上安装更多的 dll。

    另外,一些工具包不使用操作系统的原生外观,例如许多 java 程序。

    【讨论】:

      猜你喜欢
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      相关资源
      最近更新 更多