GHashTableIter将GtkSpinButton设置为可调整

时间:2011-05-02 22:32:40

标签: c gtk hashtable

我需要将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));
    }
}

1 个答案:

答案 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);
}