LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 884|回复: 6

gtk+2.0编程中出现问题?

[复制链接]
发表于 2008-12-24 14:13:23 | 显示全部楼层 |阅读模式
各位,在GTK+2.14中创建好一个toolbar后,发现用gtk_toolbar_set_tooltips()函数后不能够设置添加到toolbar里面button的tooltips出现与消隐,查了下资料发现在gtk+2.14版本中这个函数的作用已经取消了,但是有什么更好的办法来实现这个tooltips在鼠标接近时出现或消隐呢?

    大家帮个忙~~~
 楼主| 发表于 2008-12-24 22:18:02 | 显示全部楼层
源代码就是下面这样的~~
tooltips 开关不起作用~

#include <gtk/gtk.h>

GtkWidget * close_button;
GtkWidget *tooltips_button;

/*设置tooltips on/off的回掉函数*/
void toggle_event (GtkWidget *widget,
                   gpointer data)
{
  gtk_toolbar_set_tooltips (GTK_TOOLBAR (data),
                            GTK_TOGGLE_BUTTON (widget)->active);
}

int main(int argc, char * argv[])
{
  GtkWidget *dialog;
  GtkWidget *handlebox;
  GtkWidget *toolbar;
  GtkWidget *icon;

  gtk_init (&argc ,&argv);

  dialog = gtk_dialog_new ();
  gtk_window_set_title (GTK_WINDOW(dialog),"GTKTOOLBAR");
  gtk_widget_set_size_request (dialog ,300,100);
  GTK_WINDOW(dialog)->allow_shrink = TRUE;
  g_signal_connect (G_OBJECT(dialog),"delete_event",
                    G_CALLBACK(gtk_main_quit),
                    NULL);

  gtk_widget_realize(dialog);

  handlebox = gtk_handle_box_new ();
  gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox),handlebox,FALSE,FALSE,5);

  toolbar = gtk_toolbar_new();
  gtk_toolbar_set_orientation (GTK_TOOLBAR(toolbar),GTK_ORIENTATION_HORIZONTAL);
  gtk_toolbar_set_style(GTK_TOOLBAR (toolbar),GTK_TOOLBAR_BOTH);
  gtk_container_set_border_width (GTK_CONTAINER (toolbar),5);
  gtk_container_add (GTK_CONTAINER(handlebox),toolbar);

  icon = gtk_image_new_from_file ("gtk.xpm");
  close_button = gtk_toolbar_append_item (GTK_TOOLBAR(toolbar),
                                          "Close",
                                          "Close this dialog",
                                          "rivate",
                                          icon,
                                          G_CALLBACK(gtk_main_quit),
                                          NULL);
  gtk_toolbar_append_space (GTK_TOOLBAR(toolbar));

  icon = gtk_image_new_from_file ("gtk.xpm");
  tooltips_button = gtk_toolbar_append_element (GTK_TOOLBAR(toolbar),
                                                GTK_TOOLBAR_CHILD_TOGGLEBUTTON,
                                                NULL,
                                                "Tooltips On/Off",
                                                "Toolbar with or without tips",
                                                "rivate",
                                                icon,
                                                G_CALLBACK(toggle_event),
                                                toolbar);
  gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(tooltips_button),TRUE);

  gtk_widget_show_all (dialog);

  gtk_main();
  return 0;
}
回复 支持 反对

使用道具 举报

发表于 2008-12-25 10:47:02 | 显示全部楼层
我也使用过提示,但是我是用glade生成的代码,很简单的添加进要显示的文字就可以了。建议你试试glade。
回复 支持 反对

使用道具 举报

发表于 2008-12-25 21:01:14 | 显示全部楼层
http://library.gnome.org/devel/g ... oolbar-set-tooltips

"The toolkit-wide "gtk-enable-tooltips" property is now used instead."
学GTK就要多看看gnome.org上的资料,比教程都管用
回复 支持 反对

使用道具 举报

发表于 2008-12-25 21:03:02 | 显示全部楼层
顺便说一句,我不建议LZ用glade,因为用glade编译出来的程序,还要安装libglade才能运行,而且那东西还容易把人培养的懒惰。新手尽量自己写代码
回复 支持 反对

使用道具 举报

发表于 2008-12-25 22:07:53 | 显示全部楼层
其实 glade 没有那么差啦. 虽然我自己也从来不用它来生成代码, 不过在构思界面布局时很有用, 而且最初学 gtk 时也经常参考它生成的代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-26 13:43:05 | 显示全部楼层
Post by windwhinny;1929708
http://library.gnome.org/devel/g ... oolbar-set-tooltips

"The toolkit-wide "gtk-enable-tooltips" property is now used instead."
学GTK就要多看看gnome.org上的资料,比教程都管用



我也知道这个函数被退换了,但是gtk_enable-tooltips属性怎么用呢?,能给个类子,或是把我的那个代码能改写下吗?

谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表