Forum: PC-Programmierung GTK+ Schriftgröße ändern


von KidMoritz (Gast)


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

von Marvol (Gast)


Lesenswert?

Es scheint ein wenig umständlich zu sein. Scheinbar sollte es über die 
Textattribute funktionieren:

http://library.gnome.org/devel/gtk/unstable/GtkTextTag.html

und dann dort die Eigenschaft verändern:

http://library.gnome.org/devel/gtk/unstable/GtkTextTag.html#GtkTextTag--scale

von Marvol (Gast)



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;
}

von madler (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.