问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

GTK编写图形化程序。我想知道单选按钮和复选按钮怎样连接回调函数...

发布网友 发布时间:2024-05-09 08:53

我来回答

1个回答

热心网友 时间:2024-05-31 20:34

一、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_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_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 );}

音量的图标可以用系统图标。

完了。。。不知道再问

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
炉石传说盗贼爆牌流炉石传说最新爆牌贼卡组攻略? 炉石卡组推荐:爆牌贼/狂野弃牌术/标准残片瞎/标准奇迹法 有机化学中的高分辨率NMR技术内容简介 本溪溪湖区有哪些 本溪关山湖景区好玩吗附景点介绍 溪湖区风景名胜 苹果7和苹果6的尺寸一样大吗 挑战爱神的txt全集下载地址 ...江北机场期间经过曼谷廊曼机场转机!在廊曼机场需要办理过境签吗... ...江北机场期间经过曼谷廊曼机场转机!在廊曼机场需要办理过境签 行 ... 电动独轮车多少钱一个?? 买个独轮车多少钱呢,哪个牌子好呢? 重庆老火锅加盟费多少 桶装水的桶成本价在多少 回收铑水电话 哪些地方一年气温忽上忽下 如果我买一套30万的房子交6万块首付,用住房公积金按每月还,期限十五年... ...昨晚听了国药益肾灵,有没有吃过的,效果咋样,我有前列腺炎。知道的... 好用的纯植物萃取精华推荐? 楼上炒菜的油烟怎么总会跑我家里来,确定过我家管子没有松动。我家住一... 矾类化合物是什么 矾类有哪些 ...箱包厂家有哪些?要全一些的最好离内蒙古呼伦贝尔近点。 ...耻骨这疼得厉害,走路抬不起来脚,睡觉一翻身就疼。这是怎么回事_百度... 一个长期法国客户,一直用信用证结算,马上今天要走的一个柜,可这次信用... 我有个法国客户过几天要过来了,该注意些什么? 法国客户的tva可以用英国的vat吗 ...个三诺血糖仪使用中与医院用的血糖仪对比相差很大起过3点多不敢再... 为什么用鼠标左右键点选单元格不动? 帕萨特导航提示怎么关闭? 孩子词汇量的积累:影响深远 六安到无为收费站多少公里 如何将R语言中的表格数据输出为Excel文件r语言数据输出成word_百度知 ... 老婆不给老公钱花违法吗? 土地未开发多久收回啊 建筑外墙留的这个口叫什么名字?有什么作用,后期如何处理? 净水器指示灯为什么闪烁 ...质量总是自己从16变成32,烟雾头都没法调了,怎么办 CF游戏颜色暗如何调节 犯罪学为什么要研究应然犯罪现象,违法越轨现象,社会危险现象等_百度知 ... 越轨是什么意思解释? 剖腹产后感觉特别虚弱怎么办? k694呼和浩特到昆明的列车在荣昌可不可以上车 求大神分享 音频怪物、国风新语-我在江南等你歌曲的百度网盘资源 陶瓷阶梯环的作用及应用领域 教学评价本质上不是一种价值判断,而是一种事实判断,是否正确? 事实判断能否推出价值判断被称为什么问题 成都站到郫县犀浦东站怎么走 ...无法充电,插上线能能开机,显示解锁以使用配件,但就是无法充电,如何... 广泛电子苏州有限公司怎么样