GTK+ Schriftgröße ändern

Gast #1725973
Lesenswert?

Hallo,

ich habe nun schon ne Weile im Netz gesucht, aber irgendwie ist das 
alles nicht eindeutig.
Es sieht so aus, als würde eis keine "echte" Funktion geben, um die 
Schriftgröße in einem Textfenster zu ändern.

Wie realisiere ich das mit dem GTK?
Gibt es da keine Funktion für?
Oder wird das über GDK bzw. Pango erledigt?

Grüße KidMoritz
Gast #1726179
Lesenswert?

ODER, sollte es dies sein...????

--

#include <gtk/gtk.h>

// Nicht so schön...
GtkWidget *text_view;

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

/* Callback for close button */
void
on_button_clicked (GtkWidget *button, GtkTextBuffer *buffer)
{
  static int flag=0;
  PangoFontDescription *font_desc;

  if (flag==0) {
    font_desc = pango_font_description_from_string ("mono 30");
    flag=1;
  }
  else {
    font_desc = pango_font_description_from_string ("mono 10");
    flag=0;
  }
  gtk_widget_modify_font (text_view, font_desc);
  pango_font_description_free (font_desc);
}

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


  gtk_init (&argc, &argv);

  /* Create a Window. */
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title (GTK_WINDOW (window), "Simple Multiline Text 
Input");

  /* Set a decent default size for the window. */
  gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
  g_signal_connect (G_OBJECT (window), "destroy",
                    G_CALLBACK (on_window_destroy),
                    NULL);

  vbox = gtk_vbox_new (FALSE, 2);
  gtk_container_add (GTK_CONTAINER (window), vbox);

  /* Create a multiline text widget. */
  text_view = gtk_text_view_new ();
  gtk_box_pack_start (GTK_BOX (vbox), text_view, 1, 1, 0);

  /* Obtaining the buffer associated with the widget. */
  buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));

  /* Set the default buffer text. */
  gtk_text_buffer_set_text (buffer, "Hello Text View!", -1);

  /* Create a close button. */
  button = gtk_button_new_with_label ("Change");
  gtk_box_pack_start (GTK_BOX (vbox), button, 0, 0, 0);
  g_signal_connect (G_OBJECT (button), "clicked",
                    G_CALLBACK (on_button_clicked),
                    buffer);

  gtk_widget_show_all (window);

  gtk_main ();
  return 0;
}
Gast #1726225
Lesenswert?

Am schoensten ist es mit .rc Files, dann kann man solche Attribute 
naemlich auch ohne neukompilieren aendern.

http://www.gtk.org/tutorial1.2/gtk_tut-21.html

kurze Zusammenfassung:
- bla.rc File mit zB sowas wie

style "test"
{
  font_name = "DejaVuSans 36"
}

- im Programm sowas wie

gtk_rc_parse("bla.rc");

gtk_widget_set_name(GTK_WIDGET(blubb), "test");

Damit lassen sich auch noch Hintergrundbilder, Farben etc aendern.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren