【问题标题】:Is it possible to use GTK+ with C++?是否可以将 GTK+ 与 C++ 一起使用?
【发布时间】:2011-04-11 03:00:33
【问题描述】:

我正在选择一个用于 C++ 学习的 GUI 工具包。我在网上做了一些搜索,大多数人建议 GTKmm 用于 C++ 而不是 GTK+。尽管如此,我还是看到了一些使用 GTK+ 制作的 C++ 应用程序。

所以,我只想知道具体的原因:
1. 为什么 GTKmm 是 C++ 的首选?
2. 如果我使用 GTK+ for C++ 应用程序而不是 GTKmm,我将面临哪些限制

【问题讨论】:

  • its homepage 有一些很好的理由。
  • 感谢您的快速回复!但是 GTK+ 能做到这些吗?
  • 如果您要学习 GUI 工具包,我更愿意推荐 Qt。除非 GTK 有一些你需要的功能。
  • 嗯,我选择 GTK+(或 Gtkmm)而不是 Qt 的唯一原因是因为据我所知,大多数用 Qt 编写的应用程序看起来都很混乱。我知道 GTK 在 Windows 中看起来很陌生,在 Mac 中看起来很陈旧,但我觉得使用 GTK 的应用程序在小部件排列方面比使用 Qt 的应用程序更清晰。我见过的最清晰的 Qt 应用程序是 VLC 媒体播放器和 QStardict。它们看起来比大多数其他 Qt 应用程序更好。
  • 但是,由于我只在 Windows 和 Linux 上开发软件,我认为 Gtkmm 对我来说是一个不错的选择。如果我打算在 Mac 中进行任何编程,我将学习使用专为 Mac 设计的 GUI。 Qt虽然可以在OSX中使用,但有时候看起来还是很“洋气”

标签: c++ c gtk gtkmm


【解决方案1】:
  • gtkmm 允许您使用常规 C++ 技术(例如封装、派生和多态性)编写代码。作为一名 C++ 程序员,您可能已经意识到这会导致代码更清晰、更有条理。
  • gtkmm 类型更安全,因此编译器可以检测到只有在使用 C 时才能在运行时检测到的错误。这种对特定类型的使用也使 API 更清晰,因为您可以通过查看来了解应该使用哪些类型在方法的声明中。
  • 继承可用于派生新的小部件。在 GTK+ C 代码中派生新的小部件非常复杂且容易出错,几乎没有 C 编码人员这样做。作为 C++ 开发人员,您知道派生是一种必不可少的面向对象技术。
  • 可以使用成员实例,简化内存管理。所有 GTK+ C 小部件都使用指针来处理。作为 C++ 编码人员,您知道应尽可能避免使用指针。
  • 代码更少。 GTK+ C 对象模型使用前缀函数名和转换宏。例如:gtk_button_set_text(GTK_BUTTON(button), "sometext");gtkmm C++ 代码更短更清晰。例如:button.set_text("sometext");
  • 无需担心 GTK+ 的引用计数策略不一致。

来源:http://live.gnome.org/gtkmm/FAQ

【讨论】:

  • 谢谢!我想我找到了答案!
  • “无需担心 GTK+ 不一致的引用计数策略”是什么意思。 ?
  • @liberforce 抱歉,我对图书馆不够熟悉,不知道这一点,我刚刚从提到的链接中获得了该信息。我想这意味着他们自己做引用计数,这比 GTK+ 的默认行为更好(更少的内存泄漏?)。但我不是最适合提问的人,我只是给了提问者他想要的答案。
  • 哦,我没有注意到它是 GNOME wiki 的副本/粘贴。事实上,编辑它的人是 GTKmm 开发主管 Murray Cumming,所以我想他知道他的东西,但这是我第一次看到有人抱怨。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
  • 2016-04-01
  • 2011-01-20
  • 2018-08-11
  • 2021-08-05
  • 2019-03-18
  • 2014-03-15
相关资源
最近更新 更多