我目前正在 Linux 上使用 GTk+ 进行分配。我的问题非常简单:我有两个 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 中找不到与此相关的任何内容,我将不胜感激。
编辑:好的,更多信息。我将旋转按钮包装在一个盒子上:
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);
现在它是另一个仅报告最小值的旋转按钮。
编辑::添加了整个功能。