2012-07-15 49 views
0

我想顯示我的窗口上的文本和「下一步」按鈕,但是當我運行代碼時,它給我錯誤。如何在單個窗口中顯示gtk中的文本和按鈕?

與下一個按鈕我想要移動到下一個窗口,我正在顯示其他東西。 有人可以告訴我如何做到這一點。

(try:1914): Gtk-WARNING **: Attempting to add a widget with type GtkVBox to a GtkWindow, but as a GtkBin subclass a GtkWindow can only contain one widget at a time; it already contains a widget of type GtkLabel 

我的代碼是:

#include <gtk/gtk.h> 

int main (int argc, char *argv[]) 
{ 

     GtkWidget *window; 
     GtkWidget *next; 

     GtkWidget *label; 
     GtkWidget *vbox; 
     GtkWidget *hbox; 
     GtkWidget *halign; 
     GtkWidget *valign; 


     gtk_init (&argc, &argv); 

     window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 
     gtk_window_set_title(GTK_WINDOW(window), "Center");//title position 
     gtk_window_set_default_size(GTK_WINDOW(window),600,500);//size 
     gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);//position 
     label = gtk_label_new("Cold was my soul\n\ 
         Untold was the pain\n\ 
         I faced when you left me\n\ 
         A rose in the rain....\n\ 
         So I swore to the razor\n\ 
         That never, enchained\n\ 
         Would your dark nails of faith\n\ 
         Be pushed through my veins again\n\ 
         \n\ 
         Bared on your tomb\n\ 
         I'm a prayer for your loneliness\n\ 
         And would you ever soon\n\ 
         Come above onto me?\n\ 
         For once upon a time\n\ 
         On the binds of your lowliness\n\ 
         I could always find the slot for your sacred key "); 

gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_CENTER); 
     gtk_container_add(GTK_CONTAINER(window), label); 
     vbox = gtk_vbox_new(FALSE, 5); 

     valign = gtk_alignment_new(0, 1, 0, 0); 
     gtk_container_add(GTK_CONTAINER(vbox), valign); 
     gtk_container_add(GTK_CONTAINER(window), vbox); 

     hbox = gtk_hbox_new(TRUE, 3); 

     next = gtk_button_new_with_label("Next"); 
     gtk_widget_set_size_request(next, 70, 30); 
     gtk_container_add(GTK_CONTAINER(hbox), next); 
     //  close = gtk_button_new_with_label("Close"); 
     //  gtk_container_add(GTK_CONTAINER(hbox), close); 

     halign = gtk_alignment_new(1, 0, 0, 0); 
     gtk_container_add(GTK_CONTAINER(halign), hbox); 

     gtk_box_pack_start(GTK_BOX(vbox), halign, FALSE, FALSE, 0); 
     g_signal_connect(G_OBJECT(next), "clicked", 
         G_CALLBACK(gtk_main_quit), G_OBJECT(window)); 

     gtk_widget_show_all(window); 

     g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); 


     gtk_main(); 

     return 0; 
} 

回答

1

的信息是很清楚的:一個GtkWindow只能包含一個子組件,但是你已經有標籤已經填補它。要達到您想要的效果,您必須將vbox(即可以包含多個小部件)添加到該窗口,然後將labelvbox

相關問題