Окно кнопки обновления в графическом интерфейсе Gtk

Можно ли обновить панель кнопок с несколькими кнопками, когда реализовано определенное действие, такое как «Отправить» и «Удалить»? При отправке должна быть добавлена ​​новая кнопка, а при удалении (после выбора кнопки) кнопка должна быть уничтожена (не скрыта). Графический интерфейс разработан с использованием Glade в Gtk-2, а код написан на языке C.


person djgharphalia07    schedule 03.09.2015    source источник


Ответы (2)


Используйте gtk_box_pack_start() или ...pack_end() или любой другой связанный метод, чтобы добавить кнопку в поле. Используйте gtk_widget_destroy() на кнопке, чтобы вынуть ее из контейнера и одновременно уничтожить.

person ptomato    schedule 03.09.2015
comment
Я создал их с помощью [gtk_box_pack_start()] в цикле. Но мне нужно обновить поле кнопок. Как [gtk_widget_destroy()] уничтожит все существующие кнопки и снова создаст их с новыми??? Для одиночной отправки это не проблема, но когда я добавляю несколько кнопок, я сталкиваюсь с этой проблемой и при удалении одной кнопки. - person djgharphalia07; 04.09.2015
comment
Спасибо за ваше время, сэр, новый. - person djgharphalia07; 04.09.2015

Я получил свой ответ. В цикле for вместо создания кнопок из i=0 я взял новую переменную int, которая содержит общее количество уже существующих кнопок, и теперь она создает только новые те.

void Buttons()
{
    int i, totalrecord=0;
    int prevtotalbutton;
    for (i = prevtotalbutton ; i <totalrecord; i++)
    {
        ButtonfromArray = gtk_button_new_with_label (array);
        gtk_box_pack_start(GTK_BOX(VBbox), ButtonfromArray, FALSE, TRUE, 1);
        gtk_signal_connect (GTK_OBJECT (ButtonfromArray), "clicked", GTK_SIGNAL_FUNC (ButtonsCreated), VBbox);
        gtk_widget_show (ButtonfromArray);
    } 
    prevtotalbutton=totalrecord;
}

Обновление блока кнопок здесь немного сложнее. Этот трюк действительно работал и без использования каких-либо новых функций, чтобы сделать destroy и все.

С этой проблемой сталкивается большинство из нас. Надеюсь, мой ответ поможет многим, как я.

person djgharphalia07    schedule 04.09.2015