2017-08-07 3 views
0

私はgladeとgtkをC言語で使用してアプリケーションを作成しています。私はgladeファイルを持っており、私はウィジェットのリストを作成する必要があることを明確にするために、私は可変数の行を作成する必要があり、各行にはウィジェット、ラベル、ボタンなどを入れる必要があります。 私のgladeファイル変更をCコードから永久に修正しましたか?gtkインターフェイスを作成して保存するには

ここに私のコードが、それは、グリッドが表示されないと空き地のファイルに変更を保存しません。

void on_Pagamento1_clicked() { 

GtkBuilder  *builderPagamento; 
GtkWidget  *window; 
GtkGrid   *g_grd_linea; 
GtkWidget  *g_cbt_mattino = gtk_combo_box_text_new_with_entry(); 
GtkWidget  *g_lbl_nome = gtk_label_new ("Nome"); 
GtkWidget  *g_lbl_cognome = gtk_label_new ("Cognome"); 
GtkWidget  *g_lbl_eta = gtk_label_new ("Eta"); 
GtkLayout  *g_lyt_layout; 

int i; 

builderPagamento = gtk_builder_new(); 
gtk_builder_add_from_file (builderPagamento, "glade/pagamento.glade", NULL); 

window = GTK_WIDGET(gtk_builder_get_object(builderPagamento, "pagamento")); 

gtk_builder_connect_signals(builderPagamento, NULL); 

g_lyt_layout = GTK_LAYOUT(gtk_builder_get_object(builderPagamento, "layout")); 
gtk_combo_box_text_append_text (g_cbt_mattino,"35.00"); 
gtk_label_set_text(GTK_LABEL(g_lbl_nome), "Prova"); 

g_grd_linea = gtk_grid_new(); 
for(i=1;i<=4;i++){ 
    gtk_grid_insert_column (g_grd_linea,i); 
} 
gtk_grid_attach (g_grd_linea,g_lbl_nome,1,0,1,1); 
gtk_grid_attach (g_grd_linea,g_lbl_cognome,2,0,1,1); 
gtk_grid_attach (g_grd_linea,g_lbl_eta,3,0,1,1); 
gtk_grid_attach (g_grd_linea,g_cbt_mattino,4,0,1,1); 
gtk_layout_put(g_lyt_layout,g_grd_linea,0,0); 

g_object_unref(builderPagamento); 

gtk_widget_show(window); 
} 

EDIT: 私は私の問題を解決したと思う:ウィンドウがないので、メインウィンドウはボタンを押すだけで作成され、ファイルを開き、CコードからgladeのXMLコードを変更するので、ボタンを押すと変更されたgladeファイルと結果として変更されたウィンドウが表示されます

+0

あなたのコードを貼り付けてください。 –

答えて

0

あなたの問題を解決する最も簡単な方法(私のように見える)は、望ましくない場合は目に見えないようにするページをデザインすることです。私。あなたが必要とするすべての書式を作って、それぞれをBoxに入れ、show()のうちの1つだけをBoxに入れます。

フォームがあまり変わっていない場合は、同じアイテムを変更するだけでよく、同じGtkGridまたはで表示できます。表示するフィールドのみを表示します。 VBoxまたはHBoxでは、表示されない項目はスペースを占有しません。

これをGladeから(準備する)場合は、非表示にする項目を非表示に設定し、そのプロパティをコードで表示するように変更します。

一度に/ショーにいくつかの項目を非表示にしたい場合は、その後、別のGtkFrameGtkGridか、再度GtkBoxのグループにそれらを、そして、フレームまたはボックスに表示/非表示を適用することができます。

+0

これは良いアイデアですが、私の問題は、ウィンドウをいつ作成するのか分かりません。追加する必要がある行の数です。 – Marco

+0

少なくともPythonでは、動的にGtkGridに行を追加したり、GtkBoxに項目を追加したりします。それは問題ではないはずです。グレイドでGtkBoxを定義し、あなたが知っているアイテムを入れてください。その後、コードを追加することができます。私はCを使ってからしばらくしていましたが、それも可能です。 – jcoppens

+0

いいえ、コードで項目を追加すると、それらはグレイドファイルに保存されるのでしょうか、それともコードがそれを課すために表示されますか? – Marco

関連する問題