主题容器gtk + 3内的所有小部件

问题描述 投票:0回答:1

需要设置容器内所有小部件的样式。对特定的小部件类(如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;
}
c gtk gtk3
1个回答
0
投票

您几乎做到了。

.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的信息,。

© www.soinside.com 2019 - 2024. All rights reserved.