2013-01-19 26 views
6

ai đó có thể nhập một ví dụ đơn giản để tạo kiểu cho tiện ích GTK + bằng css? Tôi không thể tìm ra cách để làm điều đó nhìn vào tài liệu:Cách tạo kiểu GTK + với CSS tùy chỉnh?

#include <gtk/gtk.h> 
int main(int argc,char *argv[]) 
{ 
    gtk_init(&argc,&argv); 
    GtkWidget *window; 
    GtkWidget *button; 
    GtkCssProvider *cssProvider; 

    gtk_css_provider_load_from_path(cssProvider,"./gtkExample2.css",NULL); 

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
    button = gtk_button_new_with_label("GTK Button"); 

    gtk_style_context_add_provider(gtk_widget_get_style_context(window),cssProvider,GTK_STYLE_PROVIDER_PRIORITY_USER); 

    g_signal_connect_swapped(window,"delete-event",G_CALLBACK(gtk_widget_destroy),window); 

    gtk_container_set_border_width(GTK_CONTAINER(window),20); 
    gtk_container_add(GTK_CONTAINER(window),button); 

    gtk_widget_show(window); 
    gtk_widget_show(button); 

    gtk_main(); 
    return 1; 
} 
+0

Tôi đã cố gắng, tôi sẽ thêm những gì tôi hiện có – user1502482

+0

Bạn đang gặp phải vấn đề gì với mã đó? –

+0

Biên dịch khôn ngoan, đối số 2 được chuyển vào gtk_style_context_add_provider không chính xác. Nó yêu cầu GtkStyleProvider và tôi cung cấp GtkCssProvider và tôi không biết làm thế nào để có được GtkStyleProvider – user1502482

Trả lời

1

Không biết một điều duy nhất về phong cách CSS trong GTK3 (ngoại trừ việc nó thường phá vỡ như các nhà phát triển thích để sửa chữa mọi thứ - tôn trọng Tiêu chuẩn CSS - hơn là giữ tính tương thích thông qua các phiên bản).

Tuy nhiên, tôi có thể nói với bạn rằng đây là sai:

g_signal_connect_swapped(window,"delete-event",G_CALLBACK(gtk_widget_destroy),window); 

gì bạn thực sự muốn nó dừng lại GTK khi cửa sổ chính được đóng lại. Này được thực hiện như thế này:.

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

nhận xét khác là bạn đang gọi điện thoại

gtk_widget_show(window); 
gtk_widget_show(button); 

Khi cây widget đã được hoàn thành (ví dụ, bạn dừng lại thêm các widget trong container và container cửa sổ mục cấp đầu), điều này có thể được đơn giản hóa thành:

gtk_widget_show_all(window); 

hãy cũng lưu ý rằng một chương trình mà làm việc nên quay về 0 nếu thành công, và sử dụng các giá trị khác không tor lỗi báo cáo.

+2

Điều này không trả lời được câu hỏi – user877329

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