Hey leute, vielleicht kann mir einer bei meinem problem helfen. habe erst vor kurzem angefangen mich mit gtk in c zu beschäftigen, kann also sein, dass meine frage eine sehr banale für manche ist
also, unten seht ihr meinen quellcode: in der menüleiste meines fensters möchte ich mit dem menüpunkt "/Telefonbuch/TB Oeffnen" auf die funktion "tb_open" zugreifen. In dieser funktion wiederum würde ich gerne eine ausgabe mittels label auf meinem hauptfenster erscheinen lassen. dazu habe ich so eine vbox angelegt und hatte gehofft, dass ich diese auf meinem fenster ausgeben kann. allerdings erscheint keine ausgabe bei betätigen des menüpunkts.
meine frage also: wie bekomme ich über eine andere klasse ausgaben oder andere dinge, wie textfelder etc. auf mein hauptfenster "fenster", welches ich in meiner mainfunktion angelegt habe.
hoffe, ihr versteht mein anliegen und vielen dank für eure hilfe
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | #include <stdlib.h>
#include <gtk/gtk.h>
GtkWidget tb_open(GtkWidget *widget);
GtkWidget *menue_erzeugen(GtkWidget *fenster);
static GtkWidget *fenster;
/*Die Menüleiste*/
static GtkItemFactoryEntry menu_array[] =
{
{ "/_Telefonbuch", NULL, NULL, 0, "<Branch>" },
{ "/Telefonbuch/TB Oeffnen", "<control>O", tb_open, 0, NULL}, //hier rufe ich die funktion auf
{ "/Telefonbuch/Neu hinzufuegen", "<control>N", NULL, 0, NULL},
{ "/Telefonbuch/Eintrag suchen", "<control>S", NULL, 0, NULL},
{ "/Telefonbuch/sep1", NULL, NULL, 0, "<Separator>"},
{ "/Telefonbuch/Beenden", "<control>B", gtk_main_quit, 0, NULL},
{ "/_Optionen", NULL, NULL, 0, "<Branch>"},
{ "/_Optionen/Info", NULL, NULL, 0, NULL},
{ "/_Optionen/sep1", NULL, NULL, 0, "<Separator>"},
{ "/_Optionen/Hilfe", "<control>H", NULL, 0, NULL},
};
GtkWidget *menue_erzeugen(GtkWidget *fenster)
{
GtkWidget *menueleiste;
GtkItemFactory *itemfact;
GtkAccelGroup *accelgroup;
gint msize = sizeof(menu_array) / sizeof(menu_array[0]);
accelgroup = gtk_accel_group_new();
itemfact = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accelgroup);
gtk_item_factory_create_items(itemfact, msize, menu_array, NULL);
menueleiste = gtk_item_factory_get_widget(itemfact, "<main>");
return menueleiste;
}
void tb_open(GtkWidget *vbox)
{
GtkWidget *label;
GtkWidget *labelbox;
labelbox = gtk_vbox_new (FALSE, 0);
//labelbox = gtk_event_box_new();
label = gtk_label_new("TB Oeffnen...");
//gtk_box_pack_start(GTK_BOX(labelbox), label, FALSE, TRUE, 0);
gtk_container_add(GTK_CONTAINER(labelbox), label);
gtk_container_add(GTK_CONTAINER (fenster), labelbox);
gtk_widget_show(labelbox);
gtk_widget_show(label);
gtk_widget_show(fenster);
}
int main (int argc, char *argv[])
{
GtkWidget *menueleiste;
GtkWidget *hbox, *vbox;
/* Initialize GTK+ */
gtk_init (&argc, &argv);
/* Create the main window */
fenster = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_usize(GTK_WIDGET (fenster),400, 500);
gtk_window_set_title (GTK_WINDOW (fenster), "TB");
gtk_window_set_position (GTK_WINDOW (fenster), GTK_WIN_POS_CENTER);
g_signal_connect(GTK_OBJECT(fenster), "destroy", gtk_main_quit, NULL);
/* Create a boxes */
vbox = gtk_vbox_new (FALSE, 0);
hbox = gtk_hbox_new (FALSE, 0);
gtk_container_add(GTK_CONTAINER (fenster), vbox);
/*Menüleiste initialisieren*/
menueleiste = menue_erzeugen(fenster);
gtk_box_pack_start(GTK_BOX(vbox), menueleiste, FALSE, TRUE, 0);
gtk_widget_show(menueleiste);
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
/* Enter the main loop */
gtk_widget_show_all (fenster);
gtk_main ();
return 0;
}
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | #include <stdlib.h>
#include <gtk/gtk.h>
GtkWidget tb_open(GtkWidget *widget);
GtkWidget *menue_erzeugen(GtkWidget *fenster);
static GtkWidget *fenster;
/*Die Menüleiste*/
static GtkItemFactoryEntry menu_array[] =
{
{ "/_Telefonbuch", NULL, NULL, 0, "<Branch>" },
{ "/Telefonbuch/TB Oeffnen", "<control>O", tb_open, 0, NULL}, //hier rufe ich die funktion auf
{ "/Telefonbuch/Neu hinzufuegen", "<control>N", NULL, 0, NULL},
{ "/Telefonbuch/Eintrag suchen", "<control>S", NULL, 0, NULL},
{ "/Telefonbuch/sep1", NULL, NULL, 0, "<Separator>"},
{ "/Telefonbuch/Beenden", "<control>B", gtk_main_quit, 0, NULL},
{ "/_Optionen", NULL, NULL, 0, "<Branch>"},
{ "/_Optionen/Info", NULL, NULL, 0, NULL},
{ "/_Optionen/sep1", NULL, NULL, 0, "<Separator>"},
{ "/_Optionen/Hilfe", "<control>H", NULL, 0, NULL},
};
GtkWidget *menue_erzeugen(GtkWidget *fenster)
{
GtkWidget *menueleiste;
GtkItemFactory *itemfact;
GtkAccelGroup *accelgroup;
gint msize = sizeof(menu_array) / sizeof(menu_array[0]);
accelgroup = gtk_accel_group_new();
itemfact = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accelgroup);
gtk_item_factory_create_items(itemfact, msize, menu_array, NULL);
menueleiste = gtk_item_factory_get_widget(itemfact, "<main>");
return menueleiste;
}
void tb_open(GtkWidget *vbox)
{
GtkWidget *label;
GtkWidget *labelbox;
labelbox = gtk_vbox_new (FALSE, 0);
//labelbox = gtk_event_box_new();
label = gtk_label_new("TB Oeffnen...");
//gtk_box_pack_start(GTK_BOX(labelbox), label, FALSE, TRUE, 0);
gtk_container_add(GTK_CONTAINER(labelbox), label);
gtk_container_add(GTK_CONTAINER (fenster), labelbox);
gtk_widget_show(labelbox);
gtk_widget_show(label);
gtk_widget_show(fenster);
}
int main (int argc, char *argv[])
{
GtkWidget *menueleiste;
GtkWidget *hbox, *vbox;
/* Initialize GTK+ */
gtk_init (&argc, &argv);
/* Create the main window */
fenster = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_usize(GTK_WIDGET (fenster),400, 500);
gtk_window_set_title (GTK_WINDOW (fenster), "TB");
gtk_window_set_position (GTK_WINDOW (fenster), GTK_WIN_POS_CENTER);
g_signal_connect(GTK_OBJECT(fenster), "destroy", gtk_main_quit, NULL);
/* Create a boxes */
vbox = gtk_vbox_new (FALSE, 0);
hbox = gtk_hbox_new (FALSE, 0);
gtk_container_add(GTK_CONTAINER (fenster), vbox);
/*Menüleiste initialisieren*/
menueleiste = menue_erzeugen(fenster);
gtk_box_pack_start(GTK_BOX(vbox), menueleiste, FALSE, TRUE, 0);
gtk_widget_show(menueleiste);
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
/* Enter the main loop */
gtk_widget_show_all (fenster);
gtk_main ();
return 0;
}
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | #include <stdlib.h>
#include <gtk/gtk.h>
GtkWidget tb_open(GtkWidget *widget);
GtkWidget *menue_erzeugen(GtkWidget *fenster);
static GtkWidget *fenster;
/*Die Menüleiste*/
static GtkItemFactoryEntry menu_array[] =
{
{ "/_Telefonbuch", NULL, NULL, 0, "<Branch>" },
{ "/Telefonbuch/TB Oeffnen", "<control>O", tb_open, 0, NULL}, //hier rufe ich die funktion auf
{ "/Telefonbuch/Neu hinzufuegen", "<control>N", NULL, 0, NULL},
{ "/Telefonbuch/Eintrag suchen", "<control>S", NULL, 0, NULL},
{ "/Telefonbuch/sep1", NULL, NULL, 0, "<Separator>"},
{ "/Telefonbuch/Beenden", "<control>B", gtk_main_quit, 0, NULL},
{ "/_Optionen", NULL, NULL, 0, "<Branch>"},
{ "/_Optionen/Info", NULL, NULL, 0, NULL},
{ "/_Optionen/sep1", NULL, NULL, 0, "<Separator>"},
{ "/_Optionen/Hilfe", "<control>H", NULL, 0, NULL},
};
GtkWidget *menue_erzeugen(GtkWidget *fenster)
{
GtkWidget *menueleiste;
GtkItemFactory *itemfact;
GtkAccelGroup *accelgroup;
gint msize = sizeof(menu_array) / sizeof(menu_array[0]);
accelgroup = gtk_accel_group_new();
itemfact = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accelgroup);
gtk_item_factory_create_items(itemfact, msize, menu_array, NULL);
menueleiste = gtk_item_factory_get_widget(itemfact, "<main>");
return menueleiste;
}
void tb_open(GtkWidget *vbox)
{
GtkWidget *label;
GtkWidget *labelbox;
labelbox = gtk_vbox_new (FALSE, 0);
//labelbox = gtk_event_box_new();
label = gtk_label_new("TB Oeffnen...");
//gtk_box_pack_start(GTK_BOX(labelbox), label, FALSE, TRUE, 0);
gtk_container_add(GTK_CONTAINER(labelbox), label);
gtk_container_add(GTK_CONTAINER (fenster), labelbox);
gtk_widget_show(labelbox);
gtk_widget_show(label);
gtk_widget_show(fenster);
}
int main (int argc, char *argv[])
{
GtkWidget *menueleiste;
GtkWidget *hbox, *vbox;
/* Initialize GTK+ */
gtk_init (&argc, &argv);
/* Create the main window */
fenster = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_usize(GTK_WIDGET (fenster),400, 500);
gtk_window_set_title (GTK_WINDOW (fenster), "TB");
gtk_window_set_position (GTK_WINDOW (fenster), GTK_WIN_POS_CENTER);
g_signal_connect(GTK_OBJECT(fenster), "destroy", gtk_main_quit, NULL);
/* Create a boxes */
vbox = gtk_vbox_new (FALSE, 0);
hbox = gtk_hbox_new (FALSE, 0);
gtk_container_add(GTK_CONTAINER (fenster), vbox);
/*Menüleiste initialisieren*/
menueleiste = menue_erzeugen(fenster);
gtk_box_pack_start(GTK_BOX(vbox), menueleiste, FALSE, TRUE, 0);
gtk_widget_show(menueleiste);
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
/* Enter the main loop */
gtk_widget_show_all (fenster);
gtk_main ();
return 0;
}
| |
|