1

私は現在、Linux で GTk+ を使用する割り当てに取り組んでいます。私の質問は非常に単純です。次のように定義された 2 つの SpinButtons があります。

void editor_pedir_datos(GtkWidget * ventana, gpointer layout_editor){
    GtkWidget *cajav;
    GtkWidget *labelfilas;
    GtkWidget *labelcolumnas;
    GtkWidget *botonenviar;


    cajav = gtk_box_new(GTK_ORIENTATION_VERTICAL,10);
    spinfilas = gtk_spin_button_new_with_range(2,15,1);

    spincolumnas = gtk_spin_button_new_with_range(4,15,1);

    ventana_datos = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    gtk_window_set_position(GTK_WINDOW(ventana_datos),GTK_WIN_POS_CENTER);
    gtk_window_set_title(GTK_WINDOW(ventana_datos), "Ingresar Datos");

    labelfilas = gtk_label_new("Filas:");

    labelcolumnas = gtk_label_new("Columnas:");



    botonenviar = gtk_button_new_with_label("Aceptar");

    gtk_box_pack_start(GTK_BOX(cajav), labelfilas,0,0,0);
    gtk_box_pack_start(GTK_BOX(cajav), spinfilas,0,0,0);
    gtk_box_pack_start(GTK_BOX(cajav), labelcolumnas,0,0,0);
    gtk_box_pack_start(GTK_BOX(cajav), spincolumnas,0,0,0);
    gtk_box_pack_start(GTK_BOX(cajav), botonenviar,0,0,0);

    gtk_container_add(GTK_CONTAINER (ventana_datos), cajav);
    gtk_widget_show_all(ventana_datos);
    g_signal_connect(botonenviar, "button_press_event", G_CALLBACK(editor_nuevo_nivel_con_datos), NULL);

}

スピンボタンとウィンドウ "ventana_datos" はどちらもグローバル ポインターです。ボタンのコールバック関数で、値を読み取っています。

void editor_nuevo_nivel_con_datos(GtkWidget * ventana, gpointer data){

    int columnas_sp = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spincolumnas));
    int filas_sp = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinfilas));

    g_print("Filas: %d Columnas: %d\n", filas_sp, columnas_sp);
    gtk_widget_destroy(ventana_datos);
    nivel_mod = malloc(sizeof(struct nivel));
    nuevo_nivel_vacio(nivel_mod, filas_sp, columnas_sp);
    editor_cargar_nivel(nivel_mod);

}

問題はfilas_sp、実際にスピンボタンに入力された正しい値です。ただし、columnas_spユーザーがスピンボタンに入力した値に関係なく、常にスピンボタン範囲の最小値 (4) です。これは私が見逃している機能/構成ですか?

これに関連する API は見つかりませんでした。助けていただければ幸いです。

編集:OK、もう少し情報。ボックスにスピンボタンを詰めています:

gtk_box_pack_start(GTK_BOX(cajav), labelfilas,0,0,0);
gtk_box_pack_start(GTK_BOX(cajav), spinfilas,0,0,0);
gtk_box_pack_start(GTK_BOX(cajav), labelcolumnas,0,0,0);
gtk_box_pack_start(GTK_BOX(cajav), spincolumnas,0,0,0);

ラベルは、スピンボタンの目的を示すための単なるラベルです。逆の順序でパックすると、次のようになります。

gtk_box_pack_start(GTK_BOX(cajav), labelcolumnas,0,0,0);
gtk_box_pack_start(GTK_BOX(cajav), spincolumnas,0,0,0);
gtk_box_pack_start(GTK_BOX(cajav), labelfilas,0,0,0);
gtk_box_pack_start(GTK_BOX(cajav), spinfilas,0,0,0);

これは、最小値のみを報告するもう 1 つのスピンボタンです。

編集: : 関数全体を追加しました。

4

0 に答える 0