GTK +将笔记本标签放在工具栏/其他小部件的顶部

时间:2012-01-31 14:39:39

标签: c gtk

我在ubuntu 11.10 oneiric ocelot中使用C语言进行GTK +编程。

我有一个笔记本小部件(gtk_notebook)放在内容的中间。我有其他小工具,如菜单栏和其他一些。我的问题是,它是否可以绘制/放置笔记本的标签在我将设置的地方(例如在菜单栏或工具栏顶部(例如,当我将小部件放在我的垂直框中时,我有gtk_box_pack_start(菜单栏,notebook_tabs,custom_widget,工具栏,笔记本))。是可能会或者我必须将GTK推向极限并制造更加不同的东西并且像制作我自己的小部件看起来像笔记本或类似的东西一样疲惫吗?任何建议/指导都是非常非常非常的。

2 个答案:

答案 0 :(得分:1)

您可以通过隐藏笔记本标签并更改笔记本页面以响应按钮点击其他小部件来实现此目的。

隐藏标签:

gtk_notebook_set_show_tabs(GTK_NOTEBOOK(view), FALSE);

然后,在添加页面时,不要给它贴上标签:

int pageId = gtk_notebook_append_page(GTK_NOTEBOOK(view), GTK_WIDGET(page), NULL);

然后,您可以使用以下选择页面:

gtk_notebook_set_current_page(GTK_NOTEBOOK(view), pageId);

你可以在GtkToggleButton的切换处理程序上执行此操作,并使用一些逻辑来使正确的按钮处于活动状态。

如果您将这些放在GtkBox中,在Gtk + 3中,您可以为其添加名称:

layout = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
gtk_widget_set_name(layout, "navbar");

并使用CSS来设置它和托管按钮的样式(例如#navbar button { color: red; })。或者,您可以将类关联到窗口小部件:

GtkStyleContext *context = gtk_widget_get_style_context(layout);
gtk_style_context_add_class(layout, "tabbed");

并使用CSS为其设置样式和托管按钮(例如.tabbed button { color: red; })。

如果您查看Adwaita gtk3 CSS主题,您可以添加与标签栏部分相关联的样式和类以使其正确设置样式,或者加载基于用户的CSS样式主题以使外观正确。

如果你可以使用GPLv3代码,我在这样做:

  1. https://github.com/rhdunn/cainteoir-gtk/blob/master/src/navbar.hpp
  2. https://github.com/rhdunn/cainteoir-gtk/blob/master/src/navbar.cpp
  3. https://github.com/rhdunn/cainteoir-gtk/blob/master/src/cainteoir.cpp(创建GtkNotebook并将按钮放在navbar

答案 1 :(得分:0)

不,无法将笔记本标签与笔记本分开。但是创建自定义小部件真的不是那么难......