Как установить цвет фона выделенного текста виджета GtkText с помощью CSS?

Я столкнулся с проблемой установки цвета фона выделенного текста в виджете GtkText. Я попробовал этот способ, но он не сработал! может кто-нибудь проверить это? --

static const char *css =
".one text.selection {"
"  all: unset;"
"  min-width: 100px;"
"  min-height:20px;"
"  background-color: blue;"
"  outline-color: gray;"
"}";


GtkWidget *w = gtk_text_new ();
gtk_widget_add_css_class (w, "one");

Если возможно, не могли бы вы поделиться кодом с любым доменом, например разместить его на codepen.io. нацельтесь на соответствующий класс и свойство CSS. В GTK виджет GtkTextView использует псевдокласс выделения для выделенного текста.

Umesh Singh 10.07.2024 06:41

Код @UmeshSingh должен быть включен в вопрос, обратите внимание на любой внешний сайт: (Что-то на моем веб-сайте или проекте не работает. Могу ли я просто вставить ссылку на него?)

Cédric 10.07.2024 09:35
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
2
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В документации GTK4 и GTK-Demo есть несколько хороших примеров на эту тему:

Я взял пример из документации GTK4 и добавил его соответствующим образом.


#include"textview-css.h"

G_GNUC_BEGIN_IGNORE_DEPRECATIONS

void activate (GtkApplication *app, gpointer data)
{
  GtkWidget *window;

  window =gtk_application_window_new(app);
  gtk_widget_set_size_request(window,150,150);

GtkWidget *view;
GtkTextBuffer *buffer;
GtkTextIter start, end;
PangoFontDescription *font_desc;
//GdkRGBA rgba;
GtkTextTag *tag;
GtkCssProvider *provider;
GtkStyleContext *context;
GtkStyleContext *context_text;


view = gtk_text_view_new();

buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));

gtk_text_buffer_set_text (buffer, "Hello, this is some text", -1);

GtkEntryBuffer *ebuffer;
GtkWidget *text = gtk_text_new();
ebuffer = gtk_text_get_buffer(GTK_TEXT(text));
gtk_entry_buffer_set_text(ebuffer,"This is another text for GtkText.",-1);

gtk_editable_set_editable(GTK_EDITABLE(text),TRUE);


/* Change default font and color throughout the widget */
provider = gtk_css_provider_new ();

gtk_css_provider_load_from_data (provider,
                                 "textview text {"
                                 " font: 15px serif;"
                                 "  color: green;"
                 "}"
                 ".view text selection {" // selected text
                                    "  background-color: green;"   
                                    "  color: red;"
                                    "}"
                    "text selection {"
                    " background-color: green;"
                    " color: red;"
                    "}",
                                 -1);

context = gtk_widget_get_style_context (view);
gtk_style_context_add_provider (context,
                                GTK_STYLE_PROVIDER (provider),
                                GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

context_text = gtk_widget_get_style_context(text);
gtk_style_context_add_provider (context_text,
                                GTK_STYLE_PROVIDER (provider),
                                GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);


/* Change left margin throughout the widget */
gtk_text_view_set_left_margin (GTK_TEXT_VIEW (view), 30);

/* Use a tag to change the color for just one part of the widget  */
tag = gtk_text_buffer_create_tag (buffer, "blue_foreground",
                                  "foreground", "blue",
                                  NULL);
gtk_text_buffer_get_iter_at_offset (buffer, &start, 7);
gtk_text_buffer_get_iter_at_offset (buffer, &end, 12);
gtk_text_buffer_apply_tag (buffer, tag, &start, &end);

 
GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL,5);
gtk_box_set_homogeneous(GTK_BOX(box),TRUE);
gtk_box_append(GTK_BOX(box),view);
gtk_box_append(GTK_BOX(box),text);
gtk_window_set_child(GTK_WINDOW(window),box);

 gtk_widget_set_visible(window,TRUE);
}```

Пожалуйста, вот GtkTextView и только GtkText.

С уважением

Он работает в виджете GtkTextView, но не работает в виджете GtkText.

dibyendu 10.07.2024 13:51

Другие вопросы по теме