Как мне дать GtkEventBox прозрачный фон? - PullRequest
1 голос
/ 08 июня 2011

В диалоге GTK у меня есть GtkLabel, обернутый в GtkEventBox, чтобы он мог получать события щелчка (для получения дополнительной информации перейдите на веб-страницу). Функционально прекрасно работает.

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

Что мне нужно сделать, чтобы фон GtkLabel оставался прозрачным при добавлении в GtkEventBox?

GdkColor color;
gdk_color_parse("blue", &color);
GtkStyle* linkstyle = gtk_style_new();
linkstyle->fg[GTK_STATE_NORMAL] = color;
GtkWidget* learnmorebox = gtk_event_box_new();
GtkWidget* learnmore = gtk_label_new("More Info");
gtk_widget_set_style(GTK_WIDGET(learnmore), GTK_STYLE(linkstyle));
gtk_container_add(GTK_CONTAINER(learnmorebox), learnmore);
gtk_widget_set_events(learnmorebox, GDK_BUTTON_PRESS_MASK);
g_signal_connect(G_OBJECT(learnmorebox), "button_press_event", G_CALLBACK(learn_more), NULL);

Я подозреваю, что есть кое-что, что я могу установить в GtkStyle, но пока не нашел ничего полезного.

1 Ответ

3 голосов
/ 11 октября 2011

GtkEventBox работает путем создания нового окна X для получения событий. По умолчанию используется окно ввода / вывода. Вызовите gtk_event_box_set_visible_window, чтобы сделать окно невидимым (и только для ввода).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...