Вход/Регистрация
Основы программирования в Linux
вернуться

Мэтью Нейл

Шрифт:

GtkCellRendererText
;

GtkCellRendererPixBuf
;

GtkCellRendererToggle
.

В вашем Представлении будет применено текстовое представление ячеек,

GtkCellRendererText
.

GtkCellRenderer* renderer = gtk_cell_renderer_text_new;

gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view),

 "This is the column title", renderer, "text", 0, NULL);

Вы создаете представление ячейки и передаете его в функцию вставки столбца. Эта функция позволяет сразу задать свойства

GtkCellRendererText
, передавая заканчивающиеся значением
NULL
пары "ключ/значение". В качестве параметров указаны представление дерева, номер столбца, заголовок столбца, представление ячейки и его свойства. В приведенном примере вы задаете атрибут "text", передав номер столбца источника данных. Для объекта
GtkCellRendererText
определено несколько других атрибутов, включая подчеркивание, шрифт, размер и т.д.

В упражнении 16.7, выполнив необходимые шаги, вы увидите, как это работает на практике.

Упражнение 16.7. Использование виджета
GtkTreeView

Введите следующий программный код и назовите файл tree.с.

1. Примените тип

enum
для обозначения столбцов, чтобы можно было ссылаться на них по именам. Общее количество столбцов удобно обозначить как
N_COLUMNS
:

#include <gtk/gtk.h>

enum {

 COLUMN_TITLE, COLUMN_ARTIST, COLUMN_CATALOGUE, N_COLUMNS

};

void closeApp(GtkWidget *window, gpointer data) {

 gtk_main_quit;

}

int main(int argc, char *argv[]) {

 GtkWidget *window;

 GtkTreeStore *store;

 GtkWidget *view;

 GtkTreeIter parent_iter, child_iter;

 GtkCellRenderer *renderer;

 gtk_init(&argc, &argv);

 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

 gtk_window_set_default_size(GTK_WINDOW(window), 300, 200);

 g_signal_connect(GTK_OBJECT(window), "destroy",

GTK_SIGNAL_FUNC(сloseApp), NULL);

2. Далее вы создаете модель дерева, передавая количество столбцов и тип каждого из них:

 store = gtk_tree_store_new(N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING,

G_TYPE_STRING);

3. Следующий этап — вставка родительской и дочерней строк в дерево:

 gtk_tree_store_append(store, &parent_iter, NULL);

 gtk_tree_store_set(store, &parent_iter,

COLUMN_TITLE, "Dark Side of the Moon",

COLUMN_ARTIST, "Pink Floyd",

COLUMN_CATALOGUE, "B000024D4P", -1);

 gtk_tree_store_append(store, &child_iter, &parent_iter);

 gtk_tree_store_set (store, &child_iter,

COLUMN_TITLE, "Speak to Me", -1);

 view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));

4. Наконец, добавьте столбцы в представление, задавая источники данных для них и заголовки:

 renderer = gtk_cell_renderer_text_new;

 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view),

COLUMN_TITLE, "Title", renderer, "text",

COLUMN_TITLE, NULL);

 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view),

COLUMN_ARTIST, "Artist", renderer, "text",

COLUMN_ARTIST, NULL);

 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view),

COLUMN_CATALOGUE, "Catalogue", renderer, "text",

COLUMN_CATALOGUE, NULL);

 gtk_container_add(GTK_CONTAINER(window), view);

  • Читать дальше
  • 1
  • ...
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: