2014-02-18 71 views
0

如何獲取GTK中的滑塊值?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(); 
} 

我怎麼能在發射功能打印滑塊值?我試過的打印數據,*數據等我怎麼能得到內部函數值

回答

3

數據的指針無論數據是在的g_signal_connect提供給(你提供了NULL),所以沒有任何意義。

我猜你看到GtkScale文檔會感到困惑:記住,你還需要看父母的小部件API,在這種情況下,GtkRange。這應該工作:

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

謝謝你的工作。 – ganeshredcobra