Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

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

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

Offline xellos

  • Lid
  • Steunpunt: Nee
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
  • Steunpunt: Nee
Re: gtk label text veranderd niet.
« Reactie #1 Gepost op: 2009/05/27, 21:43:55 »
kan iemand mij meschien helpen?

Offline Nunslaughter

  • Lid
    • timovwb
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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" ;)

Offline SeySayux

  • Lid
    • SeySayux.net
  • Steunpunt: Nee
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

Offline Nunslaughter

  • Lid
    • timovwb
  • Steunpunt: Nee
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.

Offline SeySayux

  • Lid
    • SeySayux.net
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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

Offline SeySayux

  • Lid
    • SeySayux.net
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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)