GTK+编写图形化程序。我想知道单选按钮和复选按钮怎样连接回调函数,也就是这个信号连接函数的原型
一、GTK+编写图形化程序。我想知道单选按钮和复选按钮怎样连接回调函数,也就是这个信号连接函数的原型
你貌似没明白gtk的基础知识
单选按钮和复选按钮都是从按钮那个类派生出来的
GObject +nowned + +—-GtkC +—-GtkBin +—-GtkButton +tton +—-GtkCheckButton +dioButton,所以回调函数和普通的按钮是一样的。所以我们的思路很简单,就是把每个按钮(单选/复选)加上回调函数,通过判断给回调函数传入的参数确定具体是那个按钮,回调函数原型是
g_signal_conn, detailed_signal, c_han); //第一个是触发信号的名字,第三个参数是触发信号后传入 //的参数举个例子
void button_Widget *widget, gpointer data){ g_picked\n”, (int}GtkRadioButton *radio_button;GtkRadioButton last_button;int n = 0;while (/ more buttons to add */) { radio_button = gtk_radio_button_new (…); gtk_radio_button_join_group (radio_button, last_button); g_signal_connect(G_OBJECT(button), “clicked”, G_CALLBACK(button_clicked), (gpointer)n); n++; last_button = ra }复选按钮就不说了,和那个差不多。就把radiobutton 换成 checkbutton就好了,传什么
关于滚动条 我给你在我工程里面找几句代码,自己加在自己的demo
progressBar = gtk_hscale_new_with_range( 1, 100, 1);//最小值/最大值/步长gtk_widget_set_size_request( progressBar, 480, 15 );//控件大小gtk_scale_set_draw_value(GTK_SCALE(progressBar), TRUE);//是否显示当前值gtk_scale_set_value_pos(GTK_SCALE(progressBar), GTK_POS_RIGHT);//显示当前值的位置gtk_range_set_update_policy( GTK_RANGE(progressBar), GTK_UPDATE_DELAYED);//更新方式g_signal_connect(G_OBJECT(progressBar),“value_changed”,G_CALLBACK(on_progressBar_value_changed),NULL);//这里的触发信号名字用value_changedvoid on_progressBar_value_changed( GtkWidget *widget,gpointer gdata ){ double val; val = gtk_range_get_value(GTK_RANGE(progressBar)); n = val; printf(“%f\n”, val );}音量的图标可以用系统图标。
完了。。。不知道再问

二、GTK+编写图形化程序.我想知道单选按钮和复选按钮怎样…
你貌似没明白gtk的基础知识单选按钮和复选按钮都是从按钮那个类派生出来的 GObject +—-GInitiallyUnowned +—-GtkWidget +—-GtkContainer +—-GtkBin +—-GtkButton +—-GtkToggleButton +—-GtkCheckButton +—-GtkRadioButton,所以回调函数和普通的按钮是一样的。所以我们的思路很简单,就是把每个按钮(单选/复选)加上回调函数,通过判断给回调函数传入的参数确定具体是那个按钮,回调函数原型是 g_signal_connect(instance, detailed_signal, c_handler, data); //第一个参数是控件的名字,第二个参数是触发信号的名字,第三个参数是触发信号后传入 //的参数举个例子void button_clicked(GtkWidget *widget, gpointer data){ g_print(“%d clicked\n”, (int)data);}GtkRadioButton *radio_button;GtkRadioButton last_button;int n = 0;while (/ more buttons to add */) { radio_button = gtk_radio_button_new (…); gtk_radio_button_join_group (radio_button, last_button); g_signal_connect(G_OBJECT(button), “clicked”, G_CALLBACK(button_clicked), (gpointer)n); n++; last_button = radio_button; }复选按钮就不说了,和那个差不多。就把radiobutton 换成 checkbutton就好了,传什么参数自己定。关于滚动条 我给你在我工程里面找几句代码,自己加在自己的demo里面就可以了progressBar = gtk_hscale_new_with_range( 1, 100, 1);//最小值/最大值/步长gtk_widget_set_size_request( progressBar, 480, 15 );//控件大小gtk_scale_set_draw_value(GTK_SCALE(progressBar), TRUE);//是否显示当前值gtk_scale_set_value_pos(GTK_SCALE(progressBar), GTK_POS_RIGHT);//显示当前值的位置gtk_range_set_update_policy( GTK_RANGE(progressBar), GTK_UPDATE_DELAYED);//更新方式g_signal_connect(G_OBJECT(progressBar),“value_changed”,G_CALLBACK(on_progressBar_value_changed),NULL);//这里的触发信号名字用value_changedvoid on_progressBar_value_changed( GtkWidget *widget,gpointer gdata ){ double val; val = gtk_range_get_value(GTK_RANGE(progressBar)); n = val; printf(“%f\n”, val );}音量的图标可以用系统图标。完了。。。不知道再问
三、GTK+编写图形化程序。我想知道单选按钮和复选按钮怎样连接回调函数,也就是这个信号连接函数的原型
你貌似没明白gtk的基础知识
单选按钮和复选按钮都是从按钮那个类派生出来的
GObject +—-GInitiallyUnowned +—-GtkWidget +—-GtkContainer +—-GtkBin +—-GtkButton +—-GtkToggleButton +—-GtkCheckButton +—-GtkRadioButton,所以回调函数和普通的按钮是一样的。所以我们的思路很简单,就是把每个按钮(单选/复选)加上回调函数,通过判断给回调函数传入的参数确定具体是那个按钮,回调函数原型是
g_signal_connect(instance, detailed_signal, c_handler, data); //第一个参数是控件的名字,第二个参数是触发信号的名字,第三个参数是触发信号后传入 //的参数举个例子
void button_clicked(GtkWidget *widget, gpointer data){ g_print(“%d clicked\n”, (int)data);}GtkRadioButton *radio_button;GtkRadioButton last_button;int n = 0;while (/ more buttons to add */) { radio_button = gtk_radio_button_new (…); gtk_radio_button_join_group (radio_button, last_button); g_signal_connect(G_OBJECT(button), “clicked”, G_CALLBACK(button_clicked), (gpointer)n); n++; last_button = radio_button; }复选按钮就不说了,和那个差不多。就把radiobutton 换成 checkbutton就好了,传什么参数自己定。
关于滚动条 我给你在我工程里面找几句代码,自己加在自己的demo里面就可以了
progressBar = gtk_hscale_new_with_range( 1, 100, 1);//最小值/最大值/步长gtk_widget_set_size_request( progressBar, 480, 15 );//控件大小gtk_scale_set_draw_value(GTK_SCALE(progressBar), TRUE);//是否显示当前值gtk_scale_set_value_pos(GTK_SCALE(progressBar), GTK_POS_RIGHT);//显示当前值的位置gtk_range_set_update_policy( GTK_RANGE(progressBar), GTK_UPDATE_DELAYED);//更新方式g_signal_connect(G_OBJECT(progressBar),“value_changed”,G_CALLBACK(on_progressBar_value_changed),NULL);//这里的触发信号名字用value_changedvoid on_progressBar_value_changed( GtkWidget *widget,gpointer gdata ){ double val; val = gtk_range_get_value(GTK_RANGE(progressBar)); n = val; printf(“%f\n”, val );}
音量的图标可以用系统图标。
完了。。。不知道再问