2014-02-18 2 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