Archiv verlassen und diese Seite im Standarddesign anzeigen : [GTK] vom zweiten fenster label text holen
Hi
Fange gerade erst an mit GTK Programmierung.
Ich habe ein haupt fenster mit ein Button.
dazu noch ein zweites sub_fenster mit ein Label wo "Hello World !" drin steht erstellt
Jetzt will ich ganz banal machen das wenn ich auf dem button im haupt fenster drücke einfach den Text vom Label also "Hello World !" vom sub_fenster sich holt und mittels g_print ausgibt.
Das Problem ist logischerweise das er das Label im sub_fenster nicht erkennt.
Und mit signal_connect wüsste ich jetzt auch nicht wie das zum laufen bekomme.
MFG
xmarvel
Hallo xmarvel,
der Befehl zum Auslesen des Labels lautet:
QString QLabel::text () const
Returns the label text. If the content is a plain or a rich text,
this is the
string that was passed to setText(). Otherwise, it is an
empty/null string.
Die Verbindung zwischen dem Button könnte so funktionieren:
...
// public deklarieren, damit auch in der Funktion slotPrint() lesbar
QWidget* hauptfenster = new QWidget(0,0,0);
QWidget* subfenster = new QWidget(0,0,0);
QLabel* label = new QLabel("Hello World", subfenster,0,0);
QButton* button = new QButton("Button", hauptfenster,0);
connect(button, SIGNAL(clicked()), this, SLOT(slotPrint()));
...
void myClass::slotPrint()
{
QString text = label->text();
// Ausgabe (g_print kenne ich nicht)
}
Ich hoffe, das hilft dir irgendwie.
Schöne Grüße,
Kirstin
hmm irgendwie blicke ich durch dein Code noch nicht durch hab auch schon gegoogled aber anscheinend wird sowas einfaches nicht gefragt bzw. beschrieben. :rolleyes:
Wenn dann werden nur zugriffe innerhalb eines Fensters erklärt.
Jetzt schreibe ich einfach mal ein bissel Code hier rein.
Also das erste Main fenster wird so aufgerufen:
GtkWidget*
create_main_fenster (void)
{
GtkWidget *main_fenster;
GtkWidget *vbox;
GtkWidget *text;
GtkWidget *senden;
main_fenster = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (main_fenster), "My First Test");
gtk_window_set_default_size (GTK_WINDOW (main_fenster), 500, 400);
vbox = gtk_vbox_new (TRUE, 0);
gtk_widget_show (vbox);
gtk_container_add (GTK_CONTAINER (main_fenster), vbox);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 15);
text = gtk_entry_new ();
gtk_widget_show (text);
gtk_box_pack_start (GTK_BOX (vbox), text, FALSE, FALSE, 0);
senden = gtk_button_new_with_mnemonic ("senden");
gtk_widget_show (senden);
gtk_box_pack_start (GTK_BOX (vbox), senden, FALSE, FALSE, 0);
g_signal_connect_swapped ((gpointer) senden, "clicked",
G_CALLBACK (on_senden_clicked),
GTK_OBJECT (text));
/* Store pointers to all widgets, for use by lookup_widget(). */
GLADE_HOOKUP_OBJECT_NO_REF (main_fenster, main_fenster, "main_fenster");
GLADE_HOOKUP_OBJECT (main_fenster, vbox, "vbox");
GLADE_HOOKUP_OBJECT (main_fenster, text, "text");
GLADE_HOOKUP_OBJECT (main_fenster, senden, "senden");
return main_fenster;
}
und das zweite fenster so:
GtkWidget*
create_fenster (void)
{
GtkWidget *fenster;
GtkWidget *label;
fenster = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (fenster), "fenster");
label = gtk_label_new ("Hello World !");
gtk_widget_show (label);
gtk_container_add (GTK_CONTAINER (fenster), label);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
/* Store pointers to all widgets, for use by lookup_widget(). */
GLADE_HOOKUP_OBJECT_NO_REF (fenster, fenster, "fenster");
GLADE_HOOKUP_OBJECT (fenster, label, "label");
return fenster;
}
und hier noch die Funktion vom senden Button was zur Zeit noch leer ist.
void
on_senden_clicked (GtkWidget *widget,
gpointer user_data)
{
}
Vielleicht sieht man jetzt besser den Zusammenhang wie es zur Zeit bei mir aussieht.
Falls es wichtig ist ich erstelle das Programm mit Anjuta in Verbindung mit glade.
MFG
xmarvel
axeljaeger
03-04-2004, 16:46
Die Antwort von Kirsche ist sicher gut gemeint, aber hier nicht hilfreich, weil xmarvel GTK und nicht Qt verwendet.
Hallo xmarvel,
sorry, hatte nicht gesehen, dass du nicht Qt benutzt, sondern GTK. Damit kenne ich mich leider überhaupt nicht aus.
Schöne Grüße,
Kirstin
na ist ja kein Problem. :)
Nur wenn noch jemand mind. ein Tipp hat wonach ich speziell suchen könnte bzw. eine Lösung hat immer her damit.
MFG
xmarvel
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.