GTK获取滑块值

GTK获取滑块值,gtk,gtk3,Gtk,Gtk3,如何在GTK中获取滑块值 #include <gtk/gtk.h> #include <stdio.h> #include <string.h> GtkWidget *speed_sld,*speed_label; static void transmit (GtkWidget *widget,gint *data) { float val = gtk_scale_get_digits(data); g_print("Val is %f \n",v

如何在GTK中获取滑块值

#include <gtk/gtk.h>
#include <stdio.h>
#include <string.h>

GtkWidget *speed_sld,*speed_label;

static void transmit (GtkWidget *widget,gint *data)
{
  float val = gtk_scale_get_digits(data);
  g_print("Val is %f \n",val);
}

int main (int argc, char *argv[])
{
    GtkBuilder *builder;
    GtkWidget *window;


    gtk_init (&argc, &argv);

    builder = gtk_builder_new ();
    gtk_builder_add_from_file (builder, "./ECU.glade", NULL);

    window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
    //g_signal_connect (window, "destroy", G_CALLBACK (on_window_destroy), NULL);

    speed_sld = GTK_WIDGET (gtk_builder_get_object (builder, "scale1"));
    speed_label = GTK_WIDGET (gtk_builder_get_object (builder, "label1"));

    g_signal_connect (speed_sld, "value-changed", G_CALLBACK (transmit), NULL);

    gtk_widget_show_all (window);
    gtk_main ();
}
#包括
#包括
#包括
GtkWidget*speed\u sld,*speed\u标签;
静态无效传输(GtkWidget*小部件,gint*数据)
{
float val=gtk_scale_get_数位(数据);
g_print(“Val是%f\n”,Val);
}
int main(int argc,char*argv[])
{
GtkBuilder*builder;
GtkWidget*窗口;
gtk_init(&argc,&argv);
builder=gtk_builder_new();
gtk_builder_从文件中添加(builder,“./ECU.glade”,NULL);
窗口=GTK_小部件(GTK_生成器_获取对象(生成器,“窗口1”);
//g_信号_连接(窗口,“销毁”,g_回调(在窗口_销毁),空);
speed_sld=GTK_小部件(GTK_builder_get_对象(builder,scale1));
speed_label=GTK_小部件(GTK_生成器_获取对象(生成器,“label1”);
g_信号连接(速度sld,“值更改”,g_回调(传输),空);
gtk_小部件_全部显示(窗口);
gtk_main();
}

如何在传输函数中打印滑块值?我尝试打印数据,*数据等如何获取函数中的值

数据是指向g_signal_connect中提供的任何数据的指针(您提供了NULL),因此这没有意义

我猜您在阅读GtkScale文档时会感到困惑:请记住,在本例中,您还需要查看父窗口小部件API。这应该起作用:

static void transmit (GtkRange *range, gpointer data)
{
  g_print ("current value is %f\n", gtk_range_get_value (range));
}