需要设置容器内所有小部件的样式。对特定的小部件类(如button
)进行样式设置很容易,但是我只需要将样式应用于属于特定容器的样式。就我而言,我需要对hbox_chip
中的按钮应用相同的样式。这是我尝试过的:
#include <gtk/gtk.h>
static void destroy (GtkWidget *window, gpointer data);
int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
GtkWidget *window;
GtkWidget *vbox;
GtkWidget *button1;
GtkWidget *button2;
GtkWidget *button3;
GtkWidget *hbox_chip;
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window), 300, 200);
g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy), NULL);
GtkCssProvider *css_provider = gtk_css_provider_new(); /* Apply style */
gtk_css_provider_load_from_path (css_provider, "style.css", NULL);
GdkScreen *myScreen = gdk_screen_get_default();
gtk_style_context_add_provider_for_screen
(myScreen,
GTK_STYLE_PROVIDER (css_provider),
GTK_STYLE_PROVIDER_PRIORITY_USER);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
gtk_container_add(GTK_CONTAINER (window), vbox);
hbox_chip = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
gtk_container_add (GTK_CONTAINER (vbox), hbox_chip);
button1 = gtk_button_new_with_label("1"); /* hbox for buttons */
gtk_container_add (GTK_CONTAINER (hbox_chip), button1);
button2 = gtk_button_new_with_label("2");
gtk_container_add(GTK_CONTAINER (hbox_chip), button2);
button3 = gtk_button_new_with_label("3");
gtk_container_add(GTK_CONTAINER (hbox_chip), button3);
GtkStyleContext *context;
context = gtk_widget_get_style_context(hbox_chip);
gtk_style_context_add_class(context,"chips");
gtk_widget_show_all(window);
gtk_main();
return 0;
}
/* Stop the GTK+ main loop function when the window is destroyed. */
static void destroy (GtkWidget *window, gpointer data)
{
gtk_main_quit ();
}
我的CSS文件看起来像这样
window {
background-color: red;
}
hbox_chip > button{
color:green;
box-shadow: 0px 0px 5px black;
margin-right: 20px;
}
您几乎做到了。
.chips
{
background-color: orange;
color:green;
box-shadow: 0px 0px 5px black;
margin-right: 20px;
}
.chips button
{
background-color: black;
color:yellow;
box-shadow: 0px 0px 5px black;
margin-right: 20px;
}
事实是您已经创建了该类,但从未使用过。
如果您需要更多有关CSS check my YouTube Channel的GTK的信息,。