Question

Si j'écris une application qui souhaite communiquer des informations à l'aide de la couleur, comment puis-je modifier les couleurs d'arrière-plan et de premier plan d'un widget donné? J'aimerais savoir comment faire cela dans Glade si cela est possible, ainsi que par programme (à une couleur calculée).

Je souhaite également savoir comment utiliser un widget complexe, par exemple un HBox contenant un VBox contenant des libellés .

Idéalement, cela inclurait également une solution qui me permettrait de colorer les couleurs existantes du widget et d'identifier les couleurs moyennes de toutes les images utilisées par le thème, afin de pouvoir compenser par programmation les modifications. choix de couleurs pouvant rendre le texte illisible ou se heurter de quelque manière que ce soit - mais je serais heureux si je pouvais simplement tourner un bouton en rouge.

Était-ce utile?

La solution

Exemple de programme:

#include <gtk/gtk.h>

static void on_destroy(GtkWidget* widget, gpointer data)
{
        gtk_main_quit ();
}

int main (int argc, char* argv[])
{
        GtkWidget* window;
        GtkWidget* button;

        gtk_init(&argc, &argv);
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        g_signal_connect(G_OBJECT (window), "destroy",
                G_CALLBACK (on_destroy), NULL);
        button = gtk_button_new_with_label("Hello world!");
        GdkColor red = {0, 0xffff, 0x0000, 0x0000};
        GdkColor green = {0, 0x0000, 0xffff, 0x0000};
        GdkColor blue = {0, 0x0000, 0x0000, 0xffff};
        gtk_widget_modify_bg(button, GTK_STATE_NORMAL, &red);
        gtk_widget_modify_bg(button, GTK_STATE_PRELIGHT, &green);
        gtk_widget_modify_bg(button, GTK_STATE_ACTIVE, &blue);
        gtk_container_add(GTK_CONTAINER(window), button);
        gtk_widget_show_all(window);
        gtk_main();
        return 0;
}

Autres conseils

La meilleure documentation que je connaisse est celle disponible ici: http://ometer.com/ gtk-colors.html

Vous pouvez toujours utiliser gtk_widget_override_color () et gtk_widget_override_background_color () . Ces deux fonctions vous permettent de changer la couleur d'un widget. Mais il est préférable d'utiliser les classes et les régions CSS dans votre implémentation widget / conteneur via gtk_style_context_add_class () et gtk_style_context_add_region () . .

Pour modifier la couleur d'un widget, vous pouvez initialiser une couleur et l'utiliser pour modifier la couleur du widget:

GdkColor color;
gdk_color_parse("#00FF7F", &color);
gtk_widget_modify_bg(widget, GTK_STATE_NORMAL, &color);

Pour utiliser une image au lieu d'une couleur:

GdkPixbuf *image = NULL;
GdkPixmap *background = NULL;
GtkStyle *style = NULL;

image = gdk_pixbuf_new_from_file ("background.jpg", NULL);
gdk_pixbuf_render_pixmap_and_mask (image, &background, NULL, 0);
style = gtk_style_new ();
style->bg_pixmap [0] = background;

gtk_widget_set_style (GTK_WIDGET(widget), GTK_STYLE (style));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top