mikrocontroller.net

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


Autor: KidMoritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marvol (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/GtkTex...

Autor: Marvol (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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;
}

Autor: madler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.