【发布时间】:2014-02-25 11:20:16
【问题描述】:
当调用 gtk_button 点击事件时,我试图将多个值传递给一个函数。值是 struct、int 和 gtk_image 的类型。我有一组附加到表格的 gtk 图像。代码片段如下,
`
GtkWidget *coin[6][7];
....
for(i=0;i<6;i++){
for(j=0;j<7;j++){
coin[i][j] = gtk_image_new_from_file("CoinC.png");
gtk_table_attach_defaults (GTK_TABLE(boardTable), coin[i][j], j, j+1, t, t+1);
}
t-=1;
}
`
我创建了一些按钮来执行一些功能,并且在功能中涉及一些小部件设置属性。其中之一是我想按照下面的代码更改我的图像显示
gtk_image_set_from_file(coin[slot][b->heights[0]],"CoinB.png");
按钮的事件触发代码如下
gtk_signal_connect (GTK_OBJECT(button[0]), "clicked", GTK_SIGNAL_FUNC(dropCoin(b,0,coin)),NULL);
dropCoin函数如下
gint dropCoin(board_type *b, gint slot, GtkWidget *coin[6][7]){
if(cp(b)==PLAYER_ONE){
makeMove(b,slot);
gtk_image_set_from_file(coin[slot][b->heights[0]-1],"CoinB.png");
}else{
makeMove(b, getReasonedMove(b));
gtk_image_set_from_file(coin[slot][b->heights[0]-1],"CoinA.png");
}
return 0;
}
每次我编译并运行程序时,事件都会立即触发,而无需执行任何单击操作。当我尝试点击返回相同的按钮时,该事件不会被触发。我还收到以下错误 g_cclosure_new: assertion callback_func != NULL failed 和 g_signal_connect_closure_by_id:assertion `closure != NULL' 失败
有没有其他方法可以通过小部件将多个值传递给事件函数。
【问题讨论】: