当前位置:  技术问答>linux和unix

GTK,有关创建菜单的问题,请高手解答。(来者有分)

    来源: 互联网  发布时间:2016-08-20

    本文导语:  最近在学习GTK,但是在创建菜单的时候出了些问题。问题出在使用GtkItemFactoryEntry结构的地方。 我创建了一个如下的GtkItemFactoryEntry结构: static GtkItemFactoryEntry menu_items[] ={   {"/文件(_F)", NULL, NULL, 0, ""},   {"/文件(...

最近在学习GTK,但是在创建菜单的时候出了些问题。问题出在使用GtkItemFactoryEntry结构的地方。
我创建了一个如下的GtkItemFactoryEntry结构:
static GtkItemFactoryEntry menu_items[] ={
  {"/文件(_F)", NULL, NULL, 0, ""},
  {"/文件(_F)/新建", NULL, on_menu_activate, "新建", "", GTK_STOCK_NEW},
  {"/文件(_F)/打开", NULL, on_menu_activate, "打开", "", GTK_STOCK_OPEN},
  {"/文件(_F)/保存", NULL, on_menu_activate, "保存", "", GTK_STOCK_SAVE},
  {"/文件(_F)/另存为", NULL, on_menu_activate, "另存为", "", GTK_STOCK_SAVE_AS},
  {"/文件(_F)/退出", NULL, on_menu_activate, "退出", "", GTK_STOCK_QUIT},
  {"/编辑(_E)", NULL, NULL, 0, ""},
  {"/编辑(_E)/剪切", NULL, on_menu_activate, "剪切", "", GTK_STOCK_CUT},
  {"/编辑(_E)/复制", NULL, on_menu_activate, "复制", "", GTK_STOCK_COPY},
  {"/编辑(_E)/粘贴", NULL, on_menu_activate, "粘贴", "", GTK_STOCK_PASTE},
  {"/编辑(_E)/查找", NULL, on_menu_activate, "查找", "", GTK_STOCK_FIND},
  {"/帮助(_H)", NULL, NULL, 0, ""},
  {"/帮助(_H)/关于...", NULL, on_menu_activate, "关于", "", NULL}
};
程序是抄的教材上的,并没有错误,别人的也能通过。但是放在我的电脑上面就出错了。
编译的时候出现了以下错误:
error: initializer element is not constant
error: (near initialization for ‘menu_items[1].callback_action’)
在网上查了一些资料,有的GtkItemFactoryEntry结构是含有5项,有的是含有6项。
有的GtkItemFactoryEntry的结构如下:
struct _GtkItemFactoryEntry
{
  gchar *path;                                                 (1)
  gchar *accelerator;                                     (2)

  GtkItemFactoryCallback callback;             (3)
  guint callback_action;                                 (4)

  /* possible values:
  * NULL -> ""
  * "" -> ""
  * "" -> create a title item
  * "" -> create a simple item
  * "" -> create an item holding an image
  * "" -> create an item holding a stock image
  * "" -> create a check item
  * "" -> create a toggle item
  * "" -> create a radio item
  *  -> path of a radio item to link against
  * "" -> create a separator
  * "" -> create a tearoff separator
  * "" -> create an item to hold sub items
  * "" -> create a right justified item to hold sub items
  */
  gchar *item_type;                                             (5)

  /* Extra data for some item types:
  * ImageItem -> pointer to inlined pixbuf stream
  * StockItem -> name of stock item
  */
  gconstpointer extra_data;                                (6)
};
还有一种是5项的:
struct GtkItemFactoryEntry

{

  gchar *path;

  gchar *accelerator;

  GtkItemFactoryCallback callback;

  guint                  callback_action;

  gchar          *item_type;

};
然后我把上面的程序按照5项的来写后就通过了。不过现在更迷惑了,到底哪个是对的呢,应该是都正确,但是我为什么我的这个用第一种结构就会出错呢,还请高手指点。

|
你要看你系统头文件里面定义的是什么样的?
库的版本更新了,这些结构变化很正常,你要看你系统对应的gtk版本的头文件具体是哪一个

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • GTK textview 怎么设置背景图片?google 过了,没有合适的解答
  • gtk+编译没有问题,运行的时候出问题,就是这句gtk_widget_show_all(window);请各位帮忙解答,谢谢
  • 一个 困扰我很长时间的 GTK+ 里的问题,希望高手能给予帮助解答
  • 关于gtk的目录问题,我的目录是 gtk-2.0/gtk/gtk.h ??
  • Redhat linux9.0 下Gtk+编程的#include <gtk/gtk.h>问题
  • 【重要】gtk+ 编译gtk+的问题,不同于一般gtk的搭建--1000分,问题解决了,开号给分,决不食言!大家都来看看
  • gtk 和 gtk+ 有什么区别?
  • centos5.4中安装gtk时,yum库最新版是gtk2.10,如何更新yum库安装gtk2.12
  • 我使用GTK+2.0写界面程序时,怎么找不到gtk.h文件?
  • GTK+ gtk_tree问题
  • gtk for win 和 gtk for linux 下的程序问题?
  • GTK窗口前端显示及GTK窗口闪烁
  • 用GTK开发的程序如何在没有GTK动态连接库的Linux里运行?
  • 【GTK】GTK中有没有这个widget?
  • 我想学习GTK+2.0,请问如何准备GTK编程环境???
  • [GTK] gtk最小化问题与恢复问题
  • 【gtk+】初学gtk+,请教一个问题
  • 【gtk】关于gtk布局问题
  • 本人刚学gtk编程,留下油箱,欢迎喜欢gtk编程的朋友和我交流啊!!!!
  • 大家好,想知道gtk与gtk+有什么区别?
  • 关于GTK中gtk_widget_hide()的问题
  • gtk编程问题,如何在一个线程中向gtk控件发送一个expose_event消息
  • gtk中如何获取gtk_text_view中的输入内容?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3