2017-11-06 1 views
1

GTK+ change font to spin button 및이 how to apply CSS to GTK+ code? 질문 이후, 나는 CSS 스타일을 GTK 코드에 적용하는 방법을 이해하기 시작했지만 아직 많은 혼란스러운 세부 사항이 있습니다.CSS 코드로 gtk 위젯을 개별적으로 작성하는 방법

TEST.C

#include <gtk/gtk.h> 
#include <string.h> 

static void 
activate (GtkApplication *app, 
      gpointer  user_data) 
{ 

    GtkWidget *window = gtk_application_window_new (app);; 
    GtkWidget *button_01 = gtk_button_new_with_label("This is button 01"); 
    GtkWidget *button_02 = gtk_button_new_with_label("This is button 02"); 
    GtkWidget *label0 = gtk_label_new("hello 0"); 
    GtkWidget *label1 = gtk_label_new("hello 1"); 
    GtkWidget *label2 = gtk_label_new("hello 2"); 
    GtkWidget * main_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 25); 

    GtkCssProvider *cssProvider = gtk_css_provider_new(); 
    gtk_css_provider_load_from_path(cssProvider, "theme.css", NULL); 
    gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), 
           GTK_STYLE_PROVIDER(cssProvider), 
           GTK_STYLE_PROVIDER_PRIORITY_USER); 

    gtk_box_set_homogeneous (GTK_BOX (main_box), TRUE); 
    gtk_container_add (GTK_CONTAINER (window), main_box); 
    gtk_container_add (GTK_CONTAINER (main_box), button_01); 
    gtk_container_add (GTK_CONTAINER (main_box), label0); 
    gtk_container_add (GTK_CONTAINER (main_box), label1); 
    gtk_container_add (GTK_CONTAINER (main_box), label2); 
    gtk_container_add (GTK_CONTAINER (main_box), button_02); 

    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); 
    gtk_widget_show_all (window); 
} 

int 
main (int argc, 
     char **argv) 
{ 
    GtkApplication *app; 
    int status; 

    app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE); 
    g_signal_connect (app, "activate", G_CALLBACK (activate), NULL); 
    status = g_application_run (G_APPLICATION (app), argc, argv); 
    g_object_unref (app); 

    return status; 
} 

이것은 CSS 파일입니다 :

내가 두 개의 버튼과 세 개의 레이블을 만들 수있는 코드입니다

theme.css를

GtkWindow { 
    font: Comic Sans 12 
} 

.button { 
    color: green; 
} 

모든 글꼴이 변경되고 모든 단추가 빨간색이기 때문에 코드가 제대로 작동합니다. 내가하고 싶은 일은 각 위젯을 개별적으로 스타일링하는 것입니다. 예를 들어 은 label0을 빨간색으로, label1은 녹색으로, label 2는 파란색으로 표시합니다.

이 예 https://developer.gnome.org/gtk3/stable/chap-css-overview.html,이 트릭을해야 뭔가 뭔가에 따르면

label#label0 { 
    color: red; 
} 
label#label1 { 
    color: green; 
} 
label#label2 { 
    color: blue; 
} 

하지만 분명히 내가 뭔가를 그리워한다는 것을 의미하지 않는다.

에 대한 도움말 위젯을 개별적으로 CSS 코드으로 작성하는 방법에 대한 도움을 받으십시오.

답변

3

CSS 파일은 프로그램에서 변수에 지정한 이름을 알지 못합니다. 위젯 이름을 gtk_widget_set_name()으로 지정해야합니다.

관련 문제