Nieuws:

Ubuntu-NL weer online!

Na een periode van technische problemen en een overbelaste server zijn we eindelijk weer bereikbaar.
Samen met Hobbynet, onze sponsor en hostingpartner, hebben we een oplossing gevonden zodat alles weer soepel draait.

Bedankt voor jullie geduld en begrip. We hopen nu weer verder te gaan waar we gebleven waren.

Het team van Ubuntu-NL

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: gtk label text veranderd niet.  (gelezen 3026 keer)

Offline xellos

  • Lid
gtk label text veranderd niet.
« Gepost op: 2009/05/27, 17:16:29 »
ik ben bezig met een prog als je daar op de knop chance klikt moet de text van de label veranderen.
maar dan geeft hij een error hier is de code
#include<gtk/gtk.h>

static void chance_label_text(GtkWidget *widget, GtkLabel *label)
{
   gtk_label_set_text(GTK_LABEL(label), "lol");
}

int main(int argc, char *argv[])
{
        GtkWidget *fixed;
        GtkWidget *window;
        GtkWidget *button;
        GtkWidget *label;
        GtkWidget *entry;

        gtk_init(&argc, &argv);

        //Window settings.
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(window), "Picture View V1.00");
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_default_size(GTK_WINDOW(window),200, 150);
        gtk_widget_show(window);

        fixed = gtk_fixed_new();

        //labels.
        label = gtk_label_new("none");
        gtk_fixed_put(GTK_FIXED(fixed), label, 25, 25);

        //entry.
        entry = gtk_entry_new();
        gtk_fixed_put(GTK_FIXED(fixed), entry, 25, 45);

        //buttons.
        button = gtk_button_new_with_label("Chance");
        gtk_fixed_put(GTK_FIXED(fixed), button, 25, 75);

        //Event signals.
        g_signal_connect (G_OBJECT (button), "clicked" , G_CALLBACK (chance_label_text), NULL);

        gtk_container_add(GTK_CONTAINER (window), fixed);

        gtk_widget_show_all(window);
        gtk_main();


        return 0;
}


en dit is de error die hij geeft:
gtk-CRITICAL **: gtk_label_set_text: assertion 'GTK_IS_LABEL(label)' failed
« Laatst bewerkt op: 2009/05/27, 17:18:20 door xellos »

Offline xellos

  • Lid
Re: gtk label text veranderd niet.
« Reactie #1 Gepost op: 2009/05/27, 21:43:55 »
kan iemand mij meschien helpen?

Re: gtk label text veranderd niet.
« Reactie #2 Gepost op: 2009/05/27, 21:47:23 »
Misschien wat langer wachten dan 4 luttele uurtjes tot er iemand met ervaring met C/GTK+ voorbijkomt.

Offline MataS

  • Lid
Re: gtk label text veranderd niet.
« Reactie #3 Gepost op: 2009/05/28, 11:30:31 »
Ik weet niet al te veel van C (ik gebruik zelf PyGTK), maar kun je niet gewoon label als argument geven in gtk_label_set_text? Dus: static void chance_label_text(GtkWidget *widget, GtkLabel *label)
{
   gtk_label_set_text(label, "lol"); // dus gewoon 'label' ipv 'GTK_LABEL(label)'
}
In de documentatie staat dit: http://library.gnome.org/devel/gtk/stable/GtkLabel.html#gtk-label-set-text, misschien kom je daarmee verder?

Offline xellos

  • Lid
Re: gtk label text veranderd niet.
« Reactie #4 Gepost op: 2009/05/28, 14:26:19 »
nee dan krijg ik de zelfde error

Offline MataS

  • Lid
Re: gtk label text veranderd niet.
« Reactie #5 Gepost op: 2009/05/28, 17:05:24 »
Weet je zeker dat de callback functie (chance_label_text) als argumenten een GtkWidget en een GtkLabel krijgt??
In pygtk krijgt een callback functie als argumenten het widget waarop het signal werd veroorzaakt en als tweede de user_data, opgegeven bij 'connect'
Indien dit bij C ook het geval is krijgt chance_label_text als tweede argument NULL mee (opgegeven bij g_signal_connect). Dan kun je het oplossen door g_signal_connect (G_OBJECT (button), "clicked" , G_CALLBACK (chance_label_text), NULL);te vervangen door
g_signal_connect (G_OBJECT (button), "clicked" , G_CALLBACK (chance_label_text), label);
// weet niet precies hoe het met pointers werkt, misschien '*label' i.p.v. 'label'?
P.S. het valt me nu pas op maar veranderen op z'n engels is "change", niet "chance" ;)

Re: gtk label text veranderd niet.
« Reactie #6 Gepost op: 2009/05/28, 17:07:46 »
#include <QHBoxLayout>
#include <QLabel>
#include <QPushButton>

class MyLabel : public QLabel {
    Q_OBJECT;
public:
     MyLabel(QString text) : QLabel(text) {}
public slots:
     void changeText() {
          setText("lol");
     }
};

int main(int argc, char ** argv) {
    QApplication app(argc, argv);
    
    QWidget win;
    QHBoxLayout layout;
    win.setLayout(layout);

    MyLabel label = "none";
    QButton but = "Change";
    
    QObject::connect(&but, SIGNAL(clicked()), &label, SLOT(changeText()));

    layout.addWidget(&label);
    layout.addWidget(&but);
    win.show();

    return app.exec();
}

Nu even serieus, waarom wil je per sé in GTK ontwikkelen? Qt is veel geavanceerder, gemakkelijker in gebruik en bovendien ook nog cross-platform, wat van GTK niet altijd even goed gezegd kan worden :\ (dat was een eufemisme. GTK-programma's zien er alleen goed uit in Gnome en XFCE, en daar stopt het...)
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Re: gtk label text veranderd niet.
« Reactie #7 Gepost op: 2009/05/28, 17:18:04 »
SeySayux: Als de topicstarter in GTK+ wil programmeren, en hij heeft daar een vraag over, laat het dan om met Qt af te komen.

En GTK+ kan zeker goed uitzien op windows.

Re: gtk label text veranderd niet.
« Reactie #8 Gepost op: 2009/05/29, 08:04:59 »
Ik denk persoonlijk dat er een fout zit in deze lijn:
        g_signal_connect (G_OBJECT (button), "clicked" , G_CALLBACK (chance_label_text), NULL);En dat het zou moeten zijn:
        g_signal_connect (G_OBJECT (button), "clicked" , G_CALLBACK (chance_label_text), label);
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline MataS

  • Lid
Re: gtk label text veranderd niet.
« Reactie #9 Gepost op: 2009/05/29, 10:55:59 »
Ik denk persoonlijk dat er een fout zit in deze lijn:
        g_signal_connect (G_OBJECT (button), "clicked" , G_CALLBACK (chance_label_text), NULL);En dat het zou moeten zijn:
        g_signal_connect (G_OBJECT (button), "clicked" , G_CALLBACK (chance_label_text), label);
Vind deze oplossing toch verdacht veel lijken op de mijne... http://forum.ubuntu-nl.org/programmeren/gtk-label-text-veranderd-niet/msg420646/#msg420646

Re: gtk label text veranderd niet.
« Reactie #10 Gepost op: 2009/05/29, 16:03:06 »
Ik denk persoonlijk dat er een fout zit in deze lijn:
        g_signal_connect (G_OBJECT (button), "clicked" , G_CALLBACK (chance_label_text), NULL);En dat het zou moeten zijn:
        g_signal_connect (G_OBJECT (button), "clicked" , G_CALLBACK (chance_label_text), label);
Vind deze oplossing toch verdacht veel lijken op de mijne... http://forum.ubuntu-nl.org/programmeren/gtk-label-text-veranderd-niet/msg420646/#msg420646
Sorry, dat had ik niet gezien  :|
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: gtk label text veranderd niet.
« Reactie #11 Gepost op: 2009/05/30, 00:12:27 »
Never mind, MataS/SeySayux hebben al een mogelijke oplossing genoemd ;)
« Laatst bewerkt op: 2009/05/30, 00:17:45 door profoX »
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)