【问题标题】:Using GtkMenu in Gtk+-2.14.0在 Gtk+-2.14.0 中使用 GtkMenu
【发布时间】:2010-12-16 06:14:14
【问题描述】:

我正在构建一个具有 GtkMenu 小部件的应用程序。我正在使用 Glade RAD 工具开发 UI,在 Glade 中创建项目时,我指定了支持 GtkMenu 和 GtkMenuItems 的 GTK 版本为 2.16

所以我在应用程序的任何地方都使用了 GtkMenu(用于文件菜单和右键菜单)。

但我在安装了 GTK+ 2.14 的目标平台上尝试了这个应用程序
无法识别 GtkMenu 或 GtkMenuItem。

我现在该怎么办?我需要将 GtkMenu 与 GtkMenuItems 一起使用,但我无法升级目标平台以使用 GTK+ 2.16。

所以问题是:

  1. GTK+ 2.14 是否支持 GtkMenu 和 GtkImageMenuItem/GtkMenuItems?
  2. 如果不是,我们应该改用什么?

【问题讨论】:

  • 是不是 Gtk-2.14.0 不支持 GtkMenu/GtkMenuItem ?不能用编码手动添加吗?

标签: gtk


【解决方案1】:

Gtk 2.14 明确支持 menuitem、menubar 等。 您很可能将您的用户界面保存为 gtkbuilder UI。

GtkBuilder 正在接管 libglade。很遗憾,gtk2.14 中的 GtkBuilder 还不支持 menubar 和 menuitem 的构建,尽管 gtk2.14 完全支持 menubar 和 menuitem。

你有什么选择?

  1. 保持原样,您的项目在 gtk >= 2.16 上完全可以运行(gtkbuilder 可以在 gtk >=2.16 中创建 menuitem)

  2. 将您的用户界面保存为 glade 用户界面,然后您的项目将在 gtk 2.14 上正常运行。您将需要使用 libglade 而不是 gtkbuilder 来加载接口、连接信号等。但是这是一个糟糕的选择,因为 libglade 会慢慢消失。

  3. 如果在 gtk2.14 上构建您的应用程序非常重要,那么您将希望在没有 gtkbuilder 的情况下构建您的菜单,而是直接编写代码。 (您需要查看 2.14 文档,转至 http://library.gnome.org/devel/gtk/2.14/GtkMenuBar.html)。

我会选择选项 3。祝你好运。

克里斯托夫

【讨论】:

    【解决方案2】:

    问题不在于 GTK+ 2.14 不支持 GtkMenu 和朋友。这是 UI 构建基础结构 GtkBuilder 不支持从 XML 规范创建它们。不幸的是,我不确定推荐的解决方案是什么;我自己也在处理同样的问题。

    【讨论】:

      【解决方案3】:

      GtkMenu 是核心 GTK+ 类。它从当前系列的第一个 (2.0) 版本就已经存在,甚至在 GTK+ 1.x 中。

      我认为GtkMenuItem 也是如此;例如,有些东西(如 the submenu property)被注明是在 2.12 中添加的。

      不确定这说明了您的问题;也许您误解了某些错误消息?

      更新:似乎 GtkImageMenuItem 是新的;也许您可以使用普通菜单项来模拟它?

      【讨论】:

      • 当我运行我的应用程序时,我看不到文件菜单...我收到错误 Unknow Gtk Widget: GtkImageMenuItem... 当我选择 Gtk 版本作为 Gtk+ 时,Glade 中的 GtkMenu Widget 被禁用-2.14。 Glade 没有单独的 GtkMenu 小部件或 GtkMenuItem 小部件,它具有仅带有文件菜单的菜单栏,因此我们不能单独使用 GtkMenu 或 GtkMenuItem。
      • 好吧......我自己不使用 Glade,我直接从代码中“手动”使用 API 进行所有 GTK+ 接口开发。 :|
      • 是不是 Gtk-2.14.0 不支持 GtkMenu/GtkMenuItem ?我不能在不使用 Glade Rad 工具的情况下手动添加它吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多