Добавление вкладки в GTK-Notebook при использовании Glade - PullRequest
0 голосов
/ 24 октября 2019

Я написал C-программу и изучаю GTK и Glade для создания графического интерфейса, и теперь я застрял как минимум на два дня:

Мне нужен ноутбук с одной вкладкой. На этой вкладке есть кнопка, при нажатии на которую добавляется новая вкладка.

Я нашел: 'gtk_notebook_append_page (notebook_pointer, tab_content_pointer, label)', но что бы я ни делал, это не работает. Тем более я не уверен, что взять в качестве tab_content. Я получаю одно из трех сообщений об ошибках: он жалуется на то, что это верхний уровень и не может получить родителя, или у него уже есть родитель, или просто нельзя вставить новую вкладку. взять на поляне, чтобы использовать в качестве tab_content? Или знает пример, где я мог бы это узнать?

Или мне нужно сбросить поляны и написать все в C-коде? Я нашел примеры для этого.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 27 октября 2019

Нарисуй записную книжку с поляной. Если вы щелкнете правой кнопкой мыши по вкладке, которую хотите изменить, вы можете удалить ее содержимое. (Вкладка может содержать один виджет, хотя вы можете поместить HBox или Grid для объединения нескольких).

После удаления вы можете вставить любой другой виджет в него. Вот пример:

A window with a notebook Окно с блокнотом. Содержание первой вкладки удалено

enter image description here Вставлено поле, но по умолчанию оно вертикальное, поэтому ...

enter image description here Я изменилсвойство горизонтальное

enter image description here Я вставил виджет изображения в первый пробел и кнопку выбора во второй. (Измените тему компьютера, чтобы сделать ее немного более заметной.

Если вы хотите добавить страницы из своего C-кода, вы тоже можете это сделать, просто получите ссылку на блокнот, а затем измените содержимое вкладки. .

Как примечание, я бы рекомендовал использовать Python в качестве менеджера вашего GUI. Управление GUI в Gtk и C - используя Glade или нет - утомительно. В сети есть несколько примеров того, каксделать это:

- Использование внешнего интерфейса Python GTK GUI с бэкэндом C ++

- Как использовать GTK + 3 в Python для управления всем приложением

Этот код прекрасно добавляет новую вкладку:

notebook = GTK_WIDGET (gtk_builder_get_object (builder, "notebook1"));
    if (!notebook) {
        g_critical ("Widget \"%s\" is missing in file %s.",
        TOP_WINDOW, "notebook1");
    }
tab_label = gtk_label_new ("New page's tab");
page_contents = gtk_label_new ("New page's contents");

gtk_notebook_append_page(notebook, page_contents, tab_label);

Обратите внимание, что вы должны поместить "notebook1" в поле идентификатора виджета блокнота в Glade.

...