Здравствуйте.
В GTK 1.2 пытаюсь переустановить стиль для ячейки. Цель: фон конкретной ячейки CList`а нужно сменить.
Делаю:
GtkWidget My_Clist; GtkStyle *old_style; GtkStyle *new_style; GdkColor red = "0, 0xFFFF, 0x0000, 0x0000";
My_Clist = gtk_clist_new_with_titles(3, titles);
old_style = gtk_clist_get_cell_style(GTK_CLIST(My_Clist), 1, 1);
new_style = gtk_style_copy(old_style); /*При вставке этой строки выползает ошибка времени выполнения программы: gtkstyle.c: line 371 style != NULL, и чтото типа родительский виджет -> виджет потомок
gtk_new_style->bg[0] = red;
gtk_clist_set_cell_style(GTK_CLIST(MyClist), 1, 1, new_style);
Пытался и использовать разные способы создания Clist`а, непомогло(двигал функцию его создания в разные части программы вплоть до main)
Вопрос: функция gtk_style_copy() нормально стиль ячейки Clist копирует?
В Clist нет функции копирования стиля ячейки.
Пробовал менть GtkStyle структуру ячейки на прямую, ошибка: segmentation fault.
Есть какие мысли?
GTK 1.2 проблемы с переустановкой GtkStyle для ячейки CList
GTK 1.2 проблемы с переустановкой GtkStyle для ячейки CList
С Уважением Андрей.
- sm
- Неотъемлемая часть форума
- Сообщения: 431
- Зарегистрирован: 12 мар 2004, 16:03
- Контактная информация:
Для того, чтобы изменить фон ячейки, не надо ничего копировать. Только лишь использовать функцию gtk_clist_set_cell_style.
При этом будет изменен фон выделенной ячейки. Изменить фон конкретной невыделенной ячейки кажись (не уверен) нельзя, можно лишь
всю строку целиком - см. функцию gtk_clist_set_background.
Плюс сделай замены:
GtkWidget My_Clist;
на
GtkWidget *My_Clist;
GdkColor red = "0, 0xFFFF, 0x0000, 0x0000";
на
GdkColor red; red.red = 50000; red.green = red.blue = 0;
gtk_new_style->bg[0] = red;
на
new_style->bg[GTK_STATE_NORMAL] = red;
При этом будет изменен фон выделенной ячейки. Изменить фон конкретной невыделенной ячейки кажись (не уверен) нельзя, можно лишь
всю строку целиком - см. функцию gtk_clist_set_background.
Плюс сделай замены:
GtkWidget My_Clist;
на
GtkWidget *My_Clist;
GdkColor red = "0, 0xFFFF, 0x0000, 0x0000";
на
GdkColor red; red.red = 50000; red.green = red.blue = 0;
gtk_new_style->bg[0] = red;
на
new_style->bg[GTK_STATE_NORMAL] = red;