zu erhalten Ich lerne die Grundlagen von GTK für ein Schulprojekt und ich versuche, ein Basisprogramm zu erstellen, das den Wert eines Texteintrags druckt, wie es geändert wird. Während ich eine Ausgabe irgendeiner Art immer bin, ist es ein kritischer Fehler, der sagt:Schwerer Fehler beim Versuch, Textwert von GTKEntry
Gtk-CRITICAL **: gtk_entry_get_text: assertion 'GTK_IS_ENTRY (entry)' failed
The text is : (null)
Mein Code ist wie folgt:
#include<gtk/gtk.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "salesbase.h"
#include <sqlite3.h>
#include <unistd.h>
static void change_text(GtkWidget *widget, GtkEntry *data){
const char* output = gtk_entry_get_text(data);
printf("The text is : %s\n", output);
}
int main(int argc, char *argv[]){
GtkBuilder *builder;
gtk_init(&argc, &argv);
GObject *window;
GtkEntry *input;
builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "ui/main.ui", NULL);
window = gtk_builder_get_object(builder, "mainwindow");
g_signal_connect (window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
input = GTK_ENTRY(gtk_builder_get_object(builder, "test_entry"));
g_signal_connect(input, "changed", G_CALLBACK(change_text), &input);
gtk_main();
return 0;
}
"& input" nicht an 'g_signal_connect()' übergeben; 'input' ist bereits ein Zeiger und somit ist' & input' tatsächlich ein Zeiger auf eine lokale Variable, die Sie nicht als Objekt verwenden wollen. Übergeben Sie stattdessen nur "Eingabe". – andlabs