我需要将GHashTable
- SpinButtons
的组件更改为Adjustments
我认为这样可以解决问题,但显然不会。 Gdb没有多大帮助(step
只是步骤)
GHashTableIter adjusthashtable;
gpointer key, value;
g_hash_table_iter_init (&adjusthashtable, widgetbuffer);
while (g_hash_table_iter_next (&adjusthashtable, &key, &value))
{
if(strcmp(G_OBJECT_TYPE_NAME(value),"GtkSpinButton") == 0){
value = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(value));
}
}
答案 0 :(得分:0)
您需要使用旧密钥将新值重新插入哈希表中。唯一的问题是,这可能会使迭代器失效,因此您可能需要重新初始化它。您还可以比现在更有效地检查窗口小部件是否是旋转按钮,因此内部循环将变为:
if(GTK_IS_SPIN_BUTTON(value)) {
g_hash_table_insert(widgetbuffer, key, gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(value)));
g_hash_table_iter_init(&adjusthashtable, widgetbuffer);
}