Это можно сделать, скрыв вкладки блокнота и изменив страницу блокнота в ответ на нажатие кнопки на другом виджете.
Чтобы скрыть вкладки:
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,Я делаю что-то вроде этого в:
- https://github.com/rhdunn/cainteoir-gtk/blob/master/src/navbar.hpp
- https://github.com/rhdunn/cainteoir-gtk/blob/master/src/navbar.cpp
- https://github.com/rhdunn/cainteoir-gtk/blob/master/src/cainteoir.cpp (который создает
GtkNotebook
и местакнопки в navbar
)