GTK + Размещение вкладок в блокноте в верхней части панели инструментов / другого виджета - PullRequest
1 голос
/ 31 января 2012

Я использую GTK + программирование на C в Ubuntu 11.10 oneiric ocelot.

У меня есть виджет ноутбука (gtk_notebook), который находится в середине содержимого. У меня есть другие виджеты, такие как меню и некоторые другие. Мой вопрос: возможно ли рисовать / размещать вкладки ноутбука? в месте, которое я буду устанавливать (например, под меню или в верхней части панели инструментов (например, когда я размещаю виджеты в моем вертикальном окне, у меня появляется gtk_box_pack_start (menubar, notebook_tabs, custom_widget, панель инструментов, блокнот)). возможно ли вообще, или мне придется довести GTK до предела и сделать что-то более необычное и утомительное, например, создать свой собственный виджет, похожий на ноутбук или что-то в этом роде? Любые предложения / рекомендации очень, очень ценятся.

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

Это можно сделать, скрыв вкладки блокнота и изменив страницу блокнота в ответ на нажатие кнопки на другом виджете.

Чтобы скрыть вкладки:

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)
0 голосов
/ 31 января 2012

Нет, невозможно отделить вкладки ноутбука от ноутбука.Но на самом деле не так сложно создать собственный виджет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...