GHashTableIter устанавливает GtkSpinButton в регулируемое положение - PullRequest
0 голосов
/ 03 мая 2011

Мне нужно изменить компоненты моего 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 голосов
/ 03 мая 2011

Вам необходимо заново вставить новое значение в хеш-таблицу со старым ключом. Единственная проблема заключается в том, что это может сделать недействительным ваш итератор, поэтому вам может потребоваться его повторная инициализация. Вы также можете проверить, является ли виджет вращающейся кнопкой намного эффективнее, чем вы делаете сейчас, поэтому внутренний цикл станет:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...