Anzeige:
Ergebnis 1 bis 7 von 7

Thema: GTK Anfänger Problem

  1. #1
    Registrierter Benutzer
    Registriert seit
    29.05.2003
    Beiträge
    9

    GTK Anfänger Problem

    Moin und sorry fürdas wenig aussagekräftige topic aber mir viel kein besseres ein.

    Aber nun zu dem problem, ich programmiere C und hab vor kurzem mit GTK angefangen und versuche mich momentan reinzufuchsen nur bei einem programm bekomm ich fehlermeldungen und weiß absolut nichts damit anzufangen
    Code:
    #include <gtk/gtk.h>
    
    void ausgabe (GtkWidget *widget, gpointer *data)
     { 
      gtk_entry_set_text(GTK_ENTRY(widget),"");
     }
    
    int main ( int argc, char **argv)
     {
      GtkWidget *fenster;
      GtkWidget *box;
      GtkWidget *button1;
      GtkWidget *textLabel;
      GtkWidget *textEntry;
    
    
      gtk_init(&argc,&argv);
    
     fenster = gtk_window_new(GTK_WINDOW_TOPLEVEL);
     textEntry = gtk_entry_new();  
     button1 = gtk_button_new_with_label("Eingabe");
     textLabel = gtk_label_new("1");
     box = gtk_vbox_new(FALSE,0);
    
     gtk_signal_connect(GTK_OBJECT(fenster), "destroy",  GTK_SIGNAL_FUNC(gtk_main_quit), GTK_OBJECT(fenster));
     gtk_signal_connect(GTK_OBJECT(button1), "clicked", GTK_SIGNAL_FUNC(ausgabe), GTK_OBJECT(textEntry));
    
    
     gtk_box_pack_start(GTK_BOX(box), textEntry, FALSE, FALSE, 5); 
     gtk_box_pack_start(GTK_BOX(box), button1   , FALSE, FALSE, 5);
     gtk_box_pack_start(GTK_BOX(box), textLabel, FALSE, FALSE, 5);
    
     gtk_container_add(GTK_CONTAINER(fenster),box);
    
        gtk_widget_show_all (fenster);
        gtk_main ();
        return 0;
    }
    Die fehlermeldung ist:
    Code:
     Gtk-WARNING **: invalid cast from `GtkButton' to `GtkEntry' 
     Gtk-CRITICAL **: file gtkentry.c: line 439 (gtk_entry_set_text): assertion `GTK_IS_ENTRY (entry)' failed.
    Ich finde absolut nicht worran es liegt, sicher irgendein schusselfehler nur bin ja noch anfänger, freue mich über jede hilfe.

  2. #2
    Registrierter Benutzer
    Registriert seit
    10.04.2001
    Ort
    Bremen
    Beiträge
    339
    Hi!

    Du übergibst void ausgabe (GtkWidget *widget, gpointer *data) dein Textfeld über "data" mit.
    Mit "widget" ist immer das Widget gemeint, welches das Signal ausgesandt hat, in deinem Fall hier der Button. Ändere also das hier:
    Code:
    void ausgabe (GtkWidget *widget, gpointer *data)
     { 
      gtk_entry_set_text(GTK_ENTRY(widget),"");
     }
    in das:
    Code:
    void ausgabe (GtkWidget *widget, gpointer *data)
     { 
      gtk_entry_set_text(GTK_ENTRY(data),"");
     }
    c ya,
    Tobias

  3. #3
    Registrierter Benutzer
    Registriert seit
    29.05.2003
    Beiträge
    9
    ok danke leuchtet ein nur wieso funktioniert dann das Programmbeispiel bei pronix ?


    So noch eine frage wofür ich keinen neuen thread aufmachen möchte.

    Wiemacht man es zum beispiel am einfachsten das man:
    [list=1][*]In einem TextFeld text eingeben kann.[*]Einen Button bestätigen[*]das was im textFeld steht in einem Label anzeigen.[/list=1]
    Alles soll im gleichen fenster sein.

    Ich weiß das das eigentlich leicht sein müsste nur mir fehlt irgendwie der ansatz und ohne brauch ich mich auch garnicht ernst an "größere" sachen wagen...
    Geändert von Fab96 (29-05-2003 um 18:04 Uhr)

  4. #4
    Registrierter Benutzer
    Registriert seit
    10.04.2001
    Ort
    Bremen
    Beiträge
    339
    Hi!

    Original geschrieben von Fab96
    ok danke leuchtet ein nur wieso funktioniert dann das Programmbeispiel bei pronix ?
    Bei Pronix benutzen sie gtk_signal_connect_object() zum Verbinden des Callbacks mit dem Signal nicht gtk_signal_connect() => s. auch http://developer.gnome.org/doc/API/g...CONNECT-OBJECT

    So noch eine frage wofür ich keinen neuen thread aufmachen möchte.

    Wiemacht man es zum beispiel am einfachsten das man:
    [list=1][*]In einem TextFeld text eingeben kann.[*]Einen Button bestätigen[*]das was im textFeld steht in einem Label anzeigen.[/list=1]
    Alles soll im gleichen fenster sein.
    So wie die das bei dem Link von dir gemacht haben.

    Btw, du weißt, dass das Pronix-Tutorial auf Gtk+ 1.2 aufbaut, oder?
    Gtk+ ist mittlerweile schon bei der Version 2.2.1 angekommen.
    Da du ja gerade angefangen hast Gtk+ zu lernen, würde ich mir überlegen ob es sich wirklich lohnt Gtk+ 1.2 zu lernen. Zwischen den alten und neuen Versionen gibt es einige (zum Teil recht große) Unterschiede.

    Für Gtk+ 2.x findest du hier http://gtk.org/tutorial/ ein Tutorial.

    c ya,
    Tobias

  5. #5
    Registrierter Benutzer
    Registriert seit
    29.05.2003
    Beiträge
    9
    hm upps da sucht man die ganze zeit den fehler und dann benutzt man ausversehen eine ganz andere funktion..peinlich..


    Bei dem link ist die ausgabe in einem 2ten fenster ich meinte dases im gleihcen fenster ist.


    hm soweit ich weiß ist ja gtk2.0 abwärtskompatibel aber ich werd mir das tutorial auch mal anschauen schaden tut es sicher nichts und danke für die hilfe.

  6. #6
    Registrierter Benutzer
    Registriert seit
    10.04.2001
    Ort
    Bremen
    Beiträge
    339
    Hi!

    Original geschrieben von Fab96
    hm upps da sucht man die ganze zeit den fehler und dann benutzt man ausversehen eine ganz andere funktion..peinlich..


    Bei dem link ist die ausgabe in einem 2ten fenster ich meinte dases im gleihcen fenster ist.


    hm soweit ich weiß ist ja gtk2.0 abwärtskompatibel aber ich werd mir das tutorial auch mal anschauen schaden tut es sicher nichts und danke für die hilfe.
    Nein, Gtk+ 2.0 ist nicht abwärtskompatibel mit Gtk+ 1.2. Es wurden einige Grundlegende Veränderungen durchgeführt. Eine List mit den inkompatiblen Änderungen findest du hier: http://developer.gnome.org/doc/API/2...anges-2-0.html

    c ya,
    Tobias

  7. #7
    Registrierter Benutzer
    Registriert seit
    29.05.2003
    Beiträge
    9
    hm dann solltich wohl echt gtk 2 lernen und ich hasse doch englsiche tutorials :/ naja mehr als linux schrotten beim insten kann nicht passieren

    das mit dem text istaber noch ungeklärt

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •