0
我正在使用gtk3.0.12並試圖創建一個使用css有不同選項卡背景顏色的筆記本。除了背景之外,我可以爲每個事物設置不同的屬性。我該怎麼做呢?gtk3 css與GtkNotebook
/* Compile with:
* gcc -Wall -o notebook1 `pkg-config --cflags --libs gtk+-3.0` notebook1.c
*/
#include <gtk/gtk.h>
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *mynotebook;
GtkWidget *grid;
gtk_init (&argc, &argv);
GtkCssProvider *provider = gtk_css_provider_new();
GdkDisplay *display = gdk_display_get_default();
GdkScreen *screen = gdk_display_get_default_screen (display);
gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER
(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider),
" GtkNotebook {\n" // or " .notebook {\n"
" -GtkWidget-focus-line-width: 0;\n"
"}\n"
" .notebook tab {\n" // or " * tab {\n"
" padding: 10 20 10 20;\n"
" border-radius: 8;\n"
" background-color: blue;\n"
"}\n"
" GtkNotebook tab GtkLabel#settings_tab {\n"
" color: white;\n"
" font: Serif 12;\n"
"}\n"
" .notebook tab GtkLabel#report_tab {\n"
" color: red;\n"
" font: Sans 12;\n"
"}\n", -1, NULL);
g_object_unref (provider);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window), 800, 480);
g_signal_connect (GTK_WIDGET (window), "destroy",
G_CALLBACK (gtk_main_quit), NULL);
mynotebook = gtk_notebook_new();
gtk_widget_set_name (GTK_WIDGET(mynotebook), "notebook");
gtk_notebook_set_tab_pos (GTK_NOTEBOOK (mynotebook), GTK_POS_TOP);
grid = gtk_grid_new();
GtkWidget *report_label = gtk_label_new ("Report");
gtk_widget_set_name (GTK_WIDGET(report_label), "report_tab");
gtk_container_add(GTK_CONTAINER(window),mynotebook);
gtk_container_add(GTK_CONTAINER(mynotebook),grid);
gtk_notebook_set_tab_label(GTK_NOTEBOOK(mynotebook), grid, report_label);
GtkWidget *grid2 = gtk_grid_new();
GtkWidget *settings_label = gtk_label_new ("Settings");
gtk_widget_set_name (GTK_WIDGET(settings_label), "settings_tab");
gtk_notebook_insert_page (GTK_NOTEBOOK(mynotebook), GTK_WIDGET(grid2),
GTK_WIDGET(settings_label), -1);
gtk_widget_show_all(window);
gtk_main();
return(0);
}