LINUX.ORG.RU
Ответ на: комментарий от ananas

> gtk_tree_view_column_new_with_attributes()

Так я сменю атрибут, в моем случае цвет, для всей колонки. Или я не прав? А мне нужно для отдельной ячейки, ну на крайний случай можно для отдельной строки.

zloy_starper ★★★
() автор топика
Ответ на: комментарий от zloy_starper

> Так я сменю атрибут, в моем случае цвет, для всей колонки

нет, ты укажешь, что нужный атрибут для ячеек данной колонки нужно брать из определенного поля модели.

ananas ★★★★★
()
Ответ на: комментарий от ananas

> нет, ты укажешь, что нужный атрибут для ячеек данной колонки нужно брать из определенного поля модели.

Может я тупой, но по-моему ты написал то же самое, что и я. Об этом говорит использование слова «ячеек» во множественном числе. Т.е. все ячейки колонки будут иметь один цвет.

Пример кода:

/* Описываем в некотором месте колонку 1 */ renderer = gtk_cell_renderer_text_new(); col = gtk_tree_view_column_new_with_attributes («Title», renderer, «text», 0, «foreground», «red», NULL);

gtk_tree_view_append_column(tree, col);

/* В другом месте добавляем/меняем содержимое строк*/

gtk_tree_store_append(mdel, &iter, NULL); gtk_tree_iter_set(model, &iter, ....);

Что мне сделать, чтобы именно нулевая слева и десятая сверху ячейка отрисовалась красным?

zloy_starper ★★★
() автор топика
Ответ на: комментарий от zloy_starper

а что ты делаешь, чтобы у тебя в нулевой слева и в десятой справа ячейках отображался разный текст? то же самое. для отображения текста используется атрибут text, привязанный к 0 колонке модели, а для foreground ты почему-то указал не колонку модели, а явно прибил гвоздями значение red. заведи в модели отдельную колонку для атрибута foreground - и будет тебе счастье

ananas ★★★★★
()
Ответ на: комментарий от ananas

> а что ты делаешь, чтобы у тебя в нулевой слева и в десятой справа ячейках отображался разный текст?

Я получаю iter для десятой сверху строки и устанавливаю нужны текст для нулевой колонки с помощью gtk_tree_iter_set(model, &iter, «text», 0, ...);

заведи в модели отдельную колонку для атрибута foreground - и будет тебе счастье

И дальше что? В нужный момент я меняю текст ячейки gtk_tree_iter_set(...). Как мне у этой ячейки сменить цвет на нужный при помощи отдельной колонки с атрибутом foreground?

zloy_starper ★★★
() автор топика
Ответ на: комментарий от zloy_starper

Как мне у этой ячейки сменить цвет на нужный при помощи отдельной колонки с атрибутом foreground?

внезапно

col = gtk_tree_view_column_new_with_attributes ("Title", renderer, "text", 0, "foreground", 1, NULL);
...
gtk_list_store_set(model, &iter, 0, "this is the text", 1, "red", NULL);

и будет у тебя нужная ячейка с текстом «this is the text» и красным цветом

ananas ★★★★★
()
Ответ на: комментарий от baverman

Ну наверное я тупой. Этот туториал читал. Но пример в указанной главе совершенно идиотский. Из него фиг поймешь технику работы с атрибутами.

zloy_starper ★★★
() автор топика
Ответ на: комментарий от ananas

Я правильно теперь понимаю, что есть колонки, которые собственно отображаются на экране. Такие колонки определяет тип GtkTreeViewColumn. Создается колонка с помощью gtk_tree_view_column_new_with_attributes() в числе прочих методов. А в этих колонках могут быть еще колонки свойств, суть которых - влиять на отрисовку основной колонки (GtkTreeViewColumn).

Тогда пусть у меня есть две колонки. В первой есть атрибут «text» и атрибут «foreground». Во второй только атрибут «text». Вызываю gtk_list_store_set(model, &iter, 0, «this is the text», 1, «red», 2, «text in 2 column», NULL);

Получаю в первой колонке красный текст «this is the text», во второй «text in 2 column» с цветом по умолчанию. Так?

zloy_starper ★★★
() автор топика
Ответ на: комментарий от ananas

Спасибо. Я так и думал, что именно ты тут мне поможешь. :)

Всем остальным тоже спасибо.

zloy_starper ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.