发布网友 发布时间:2024-05-09 08:53
共1个回答
热心网友 时间:2024-05-31 20:34
一、GTK编写图形化程序。我想知道单选按钮和复选按钮怎样连接回调函数,也就是这个信号连接函数的原型
你貌似没明白gtk的基础知识
单选按钮和复选按钮都是从按钮那个类派生出来的
GObject,所以回调函数和普通的按钮是一样的。所以我们的思路很简单,就是把每个按钮(单选/复选)加上回调函数,通过判断给回调函数传入的参数确定具体是那个按钮,回调函数原型是
g_signal_conn, detailed_signal, c_han);举个例子
void button_Widget widget, gpointer data)复选按钮就不说了,和那个差不多。就把radiobutton 换成 checkbutton就好了,传什么
关于滚动条 我给你在我工程里面找几句代码,自己加在自己的demo
音量的图标可以用系统图标。
完了。。。不知道再问
二、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_changed
void 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 );}
音量的图标可以用系统图标。
完了。。。不知道再问