The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"вопрос по программированию gtk+"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"вопрос по программированию gtk+"
Сообщение от manny21 emailИскать по авторуВ закладки on 29-Окт-03, 12:18  (MSK)
вопрос по программированию gtk+

есть vbox (VBOX), содержащий hbox и кнопку.
hbox содержит два виджета разделенных separator'ом.
Один из этих виджетов - лист (см. GtkWidget a()).
Вопрос: необходимо, чтобы по нажатию кнопки (button) обновилось содержимое
виджета Leftwidget. Что для этого нужно прописать в xxx и, возможно,
добавить в g_signal_connect?

//---------------------------------------------------
static void xxx (GtkWidget *button, gpointer data) { ??? }
//---------------------------------------------------
int main(int argc, char *argv[]) {
...
GtkWidget *VBOX = gtk_vbox_new (FALSE, 1);
GtkWidget * hbox = gtk_hbox_new(FALSE, 0);
GtkWidget *Separator = gtk_vseparator_new();
GtkWidget *button = gtk_button_new_with_label("Hi!");
GtkWidget *Lefwidget = a();
  
gtk_box_pack_start (GTK_BOX (VBOX), hbox, TRUE, TRUE, 0);

gtk_box_pack_start (GTK_BOX (hbox), Lefwidget, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (hbox), Separator, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (hbox), Rigwidget, TRUE, TRUE, 0);

g_signal_connect(button, "clicked", xxx, NULL);

gtk_box_pack_start (GTK_BOX (VBOX), button, FALSE, FALSE, 0);
...
}
//---------------------------------------------------
GtkWidget a(){
GtkWidget *scrolled_window = gtk_scrolled_window_new (NULL, NULL);
GtkWidget *tree_view = gtk_tree_view_new ();
GtkListStore *list = gtk_list_store_new ( ... );
GtkTreeIter iter;
gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view);
gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (list));
gtk_widget_show (tree_view);
for ( ... ) { //заполняем лист
gtk_list_store_append (GTK_LIST_STORE (list), &iter);
gtk_list_store_set (GTK_LIST_STORE (list), &iter, ..., -1);
}
GtkCellRenderer *cell;
GtkTreeViewColumn *column;
//
column = gtk_tree_view_column_new_with_attributes ("столбец1", cell, "text", 0, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), GTK_TREE_VIEW_COLUMN (column));

column = gtk_tree_view_column_new_with_attributes ("столбец2", cell, "text", 1, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), GTK_TREE_VIEW_COLUMN (column));


return scrolled_window;
}
//---------------------------------------------------

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "вопрос по программированию gtk+"
Сообщение от manny21 emailИскать по авторуВ закладки on 01-Ноя-03, 15:56  (MSK)
//Задам вопрос по-другому, на конкретном работающем примере.
//Есть лист заполненный 10 элементами, при нажатии кнопки "enter"
//на любом элементе выводится сообщение "Hello". Как сделать чтобы
//вместо вывода сообщения 1)лист "очистился" от всех элементов 2)в лист добавилось
//несколько новых элементов (напр. 3 элемента "opennet")?
//gcc file.c -o file -Wall `pkg-config gtk+-2.0 --cflags --libs`

#include <stdio.h>
#include <gtk/gtk.h>
  
void sss( gpointer data) { puts("Hello"); }
//--------------------------------------------------------------------
GtkWidget *create_list( void ) {

    GtkWidget *scrolled_window, *tree_view;
    GtkListStore *model;
    GtkTreeIter iter;
    GtkCellRenderer *cell;
    GtkTreeViewColumn *column;
    int i;
    scrolled_window = gtk_scrolled_window_new (NULL, NULL);
    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
    model = gtk_list_store_new (1, G_TYPE_STRING);
    tree_view = gtk_tree_view_new ();
    gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), tree_view);
    gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (model));
    gtk_widget_show (tree_view);
    for (i = 0; i < 10; i++) {
        gchar *msg = g_strdup_printf ("Message #%d", i);
        gtk_list_store_append (GTK_LIST_STORE (model), &iter);
        gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, msg, -1);
g_free (msg);
    }
    cell = gtk_cell_renderer_text_new ();
    column = gtk_tree_view_column_new_with_attributes ("Messages", cell, "text", 0, NULL);
    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), GTK_TREE_VIEW_COLUMN (column));
    g_signal_connect (G_OBJECT (tree_view), "select-cursor-row", G_CALLBACK (sss), NULL);
    return scrolled_window;
}
//---------------------------------------------------------------------
int main( int argc, char *argv[])
{
  GtkWidget *window, *list;

    gtk_init (&argc, &argv);
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title (GTK_WINDOW (window), "Hi");
    g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (gtk_main_quit), NULL);
    gtk_container_set_border_width (GTK_CONTAINER (window), 10);
    gtk_widget_set_size_request (GTK_WIDGET (window), 450, 400);
    list = create_list ();
    gtk_container_add (GTK_CONTAINER (window), list);
    gtk_widget_show_all (window);
    gtk_main ();
    return 0;
}

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "вопрос по программированию gtk+"
Сообщение от manny21 Искать по авторуВ закладки on 03-Ноя-03, 22:11  (MSK)
Решение найдено. Тема закрыта.
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру