Frage

Wenn Sie ein Programm in C schreiben, die eine Menge von printf für viele Zwecke hat: debuggin, Informationen etc. würde Ich mag so etwas wie das in gtk tun, einige Widget mit, dass alle printf Nachrichten, die ich in der Regel angezeigt werden würde in einem normalen c-Programm tun würde,

Danke,

--- UPDATE --- Ich verwende vte als ptomato beraten. Obwohl einige Probleme kam. Ich war mit Glade-3 und wenn die Datei Lichtung der vte war offen Widget nicht zeigen. Ich stelle fest, dass viele Warn- und 2 Kritische Fehler beim Öffnen würde angezeigt werden soll. Einer dieser kritischen war

Unable to load module 'vte' from any search paths

Ich installierte libvte-dev throug apt-get und weiß, dass ich sehe, wie in der Widget-Palette

War es hilfreich?

Lösung

Sie können mit VTE, einen Terminal-Emulator-Widget. Ich bin nicht sicher, aber ich glaube, Sie Ihr Programm stdout auf das Widget umleiten kann mit vte_terminal_set_pty() .

Andere Tipps

Sie können entweder erstellen Textansicht oder die Verwendung < a href = "http://library.gnome.org/devel/gtk/unstable/GtkLabel.html" rel = "nofollow noreferrer"> label .

Fügen Sie diese Textansicht auf das übergeordnete Fenster sagen Gtk Hauptfenster . Sie können die anderen Widgets entscheiden hinzuzufügen. (Kann ein Scroll-Fenster und dann eine Textansicht).

Verwenden Sie die api gtk_text_view_set_buffer auf das Fenster jedes Mal den Text anzuzeigen Sie ein Protokoll angezeigt werden sollen.

Sie sollten einfach eine GtkTextView verwenden und diese Funktionen verwenden, um Ihre Anmeldung in es zu umleiten:

  • g_log_set_default_handler () g_message () / g_warning () / etc. (Alles, was durch g_log geht ())
  • g_set_print_handler () (für g_print ())
  • g_set_printerr_handler () (für g_printerr ())

Leider ist die einfache printf () kann nicht einfach umgeleitet werden (aber g_print () ist ein guter Ersatz für sie).

PS: Sorry, ich kann nur einen Link einzufügen für Sie (neuen Benutzer) ...

Sie können asprintf () als GNU-Erweiterung verwenden, um eine formatierte Ausgabe durchzuführen, die es in einem neuen zugewiesenen Speicher gespeichert und müssen später befreit werden.

char* str;
asprintf(&str, "It is a number %d\n", 1);
//...
free(str);

Statt dass man, können Sie snprintf (), die nichts zugewiesen hat für Sie, es ist nur eine Reihe von Zeichen für Sie füllen (als formatierte Ausgabe).

char str[100];
snprintf(str, 100, "It is number %d\n", 1);

Sie können auch verwenden g_string_printf (), die eine glib Funktion ist, aber es speichert die formatierte Ausgabe in eine GString Variable.

GString str;
g_string_printf(&str, "It is number %d\n", 1);
//...
g_string_free(&str, TRUE);

Wenn Sie Ihre Zeichenfolge als formatierte Ausgabe erhalten, können Sie es als Text für jeden GTK-Widget verwenden können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top