2016-06-03 12 views
8

Tôi đang thử css trong gtk3 và tôi không hiểu cách sử dụng lớp cụ thể.cách đặt một lớp css cụ thể thành một tiện ích con trong gtk3? (c)

đang

C:

provider = gtk_css_provider_new(); 
display = gdk_display_get_default(); 
screen = gdk_display_get_default_screen (display); 
gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_USER); 
gtk_css_provider_load_from_path(GTK_CSS_PROVIDER(provider),"styles.css",NULL); 

enter_button = gtk_button_new_with_label("Print"); 
g_signal_connect(G_OBJECT(enter_button), "clicked", G_CALLBACK(print_entry_dialog),&t_data); 
gtk_box_pack_start(GTK_BOX(hbox3), enter_button, TRUE, TRUE, 0); 

Css (styles.css):

GtkButton{ 
    background: #669999; 
    text-shadow: 1px 1px 5px black; 
    box-shadow: 0px 0px 5px black; 
    border: 1px solid black; 
} 

Bằng cách này nó hoạt động: enter image description here

Nhưng tôi muốn thiết lập một lớp học 'enter_button' mà đặt thuộc tính chỉ cho 'enter_button', không phải cho tất cả tiện ích con dưới tên GtkButton.

Tôi đã đọc về gtk_style_context_add_class() func, nhưng tôi không biết cách nó hoạt động với tệp 'styles.css'. Tôi nên làm gì?

+1

Sử dụng chức năng bạn tìm thấy trong sự kết hợp với 'gtk_widget_get_style_context()' https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-get-style-context – B8vrede

Trả lời

9

tôi giải quyết theo cách này:

GtkStyleContext *context; 
enter_button = gtk_button_new_with_label("Print"); 
context = gtk_widget_get_style_context(enter_button); 
gtk_style_context_add_class(context,"enter_button"); 

CSS:

.enter_button{ 
    background: #669999; 
    text-shadow: 1px 1px 5px black; 
    border-radius: 3px; 
    box-shadow: 0px 0px 5px black; 
} 

Đối với thông tin thêm tìm kiếm ở đây: GtkStyleContext examples

Các vấn đề liên quan