GTK+ w C - Suwak w tabeli.

0

Pisząć program w C, nie mam pomysłu jak umieścić w scrollbarach (pionowym i poziomym) tabele (w której będą GtkEntry i GtkLabel). Na górze okna mam menu w postaci podobnej do Simple Menu (to pierwsze) <url>http://zetcode.com/tutorials/gtktutorial/menusandtoolbars/ </url>.

Potrafiłby ktoś podpowiedzieć jak to napisać scrollowanie?

1

Odpowiada Ci poniższy kod ?

#include <gtk/gtk.h>

#define WIERSZE 25
#define KOLUMNY 2

int main (int argc, char *argv[])
{
  GtkWidget *okno, *przesuwne_okno, *kontener_vbox;
  GtkWidget *pasek_menu, *plik_menu;
  GtkWidget *plik, *wyjscie;
  GtkWidget *tabela, *etykieta, *pole_tekstowe;
  guint i, j;

  gtk_init (&argc, &argv);


  okno = g_object_new ( GTK_TYPE_WINDOW, "window-position", GTK_WIN_POS_CENTER, "title", "Przewijana tabela",
                       "default-width", 250, "default-height", 100, NULL );
  g_signal_connect ( okno, "destroy", G_CALLBACK (gtk_main_quit), NULL );

  kontener_vbox = gtk_vbox_new ( FALSE, 0);
  gtk_container_add( GTK_CONTAINER( okno ), kontener_vbox );

  pasek_menu = gtk_menu_bar_new();
  plik_menu = gtk_menu_new();

  plik = gtk_menu_item_new_with_label("Plik");
  wyjscie = gtk_menu_item_new_with_label("Wyjście");

  gtk_menu_item_set_submenu(GTK_MENU_ITEM(plik), plik_menu);
  gtk_menu_shell_append(GTK_MENU_SHELL(plik_menu), wyjscie);
  gtk_menu_shell_append(GTK_MENU_SHELL(pasek_menu), plik);
  gtk_box_pack_start(GTK_BOX(kontener_vbox), pasek_menu, FALSE, FALSE, 3);
  g_signal_connect( wyjscie, "activate", G_CALLBACK(gtk_main_quit), NULL);

  /* Tworzy przewijane okno */
  przesuwne_okno = gtk_scrolled_window_new ( NULL, NULL );
  gtk_box_pack_start( GTK_BOX(kontener_vbox), przesuwne_okno, TRUE, TRUE, 0 );

  tabela = gtk_table_new ( WIERSZE, KOLUMNY, FALSE );
  for ( i = 0; i < WIERSZE; i++ )
  {
      for ( j = 0; j < KOLUMNY ; j++  )
      {
          etykieta = gtk_label_new ( "Wprowadź" );
          gtk_table_attach_defaults( GTK_TABLE(tabela), etykieta, j, j+1, i, i+1 );

          j++;

          pole_tekstowe = gtk_entry_new ();
          gtk_table_attach_defaults( GTK_TABLE(tabela), pole_tekstowe, j, j+1, i, i+1 );

      }
  }

  /* Dodaje tabele do przewijanego okna */
  gtk_scrolled_window_add_with_viewport ( GTK_SCROLLED_WINDOW(przesuwne_okno), tabela );

  gtk_widget_show_all ( okno );
  gtk_main ();

  return 0;
}

Nie wiem czy wiesz, ale jest klikany edytor GUI dla Gtk+, zwie się Glade. Nie warto męczyć się całe GUI pisać w kodzie !
Tu masz małe how-to http://cpp0x.pl/kursy/Kurs-Glade-GTK+/452

0

Tak, dziękuje skrypt naprawdę się przydał! Na podstawie jego wydedukowałem jak to robić w przyszłości mam nadzieję że innym też pomoże. Dzięki wielkie Badmaneq :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1