Página Inicial > Gtk/Gdk, GtkTreeView > Conceito e utilização de TreeViews

Conceito e utilização de TreeViews

Este poste vai especialmente para o colaborador Edvaldo, que estava com algumas duvidas sobre a utilização de TreeViews.

Bem, o conceito parece ser meio confuso, por precisamos de vários objetos para criar um único treeview. Basicamente tempo um modelo, que conterá as colunas e os dados do nosso treeview, é como se o model fosse o treeview psico, como se ele é quem fosse o treeview, porem não apresentável. Tendo nosso modelo, precisamos adicionar as colunas nele, utilizando o método append_column, passando como parametro um objeto de colunas, o GtkTreeViewColumn, que por sua vez necessita de um render, GtkCellRender, que pode ser um texto, um outro objeto, enfim, o formato da coluna. Tendo nosso model pronto, adicionamos ele à um GtkTreeView, para fazer nosso model ficar visível.

Para adicionarmos itens/dados à nosso treeview (model) usamos o método append(), que possui 2 parâmetros, o primeiro o iter do pai, ou NULL se ele não for uma linha filha, e o segundo um array, contendo as informações de cada linha.

Segue um exemplo simples de como utilizar isso tudo que eu disse acima

<?php
   // Window
   $window = new GtkWindow();
   $window->set_size_request(500, 500);
   
   // Treeview
   $model = new GtkTreeStore(TYPE_STRING, TYPE_STRING);
   $view = new GtkTreeView($model);
   
   // Coluna 1
   $cell_renderer = new GtkCellRendererText();
   $view->append_column(
      new GtkTreeViewColumn("Coluna 1", $cell_renderer, "text", 0)
   );
   
   // Coluna 2
   $cell_renderer = new GtkCellRendererText();
   $view->append_column(
      new GtkTreeViewColumn("Coluna 2", $cell_renderer, "text", 1)
   );
   
   // Adiciona os dados do GtkTreeView
   $model->append(NULL, array("Linha 1", "Valor 1"));
   $model->append(NULL, array("Linha 2", "Valor 2"));
   $model->append(NULL, array("Linha 3", "Valor 3"));
   
   // Scrolled
   $scrolled = new GtkScrolledWindow();
   $scrolled->add_with_viewport($view);
   $scrolled->set_policy( Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
   $window->add($scrolled);

   // Conecta e mostra a janela
   $window->connect_simple("destroy", array(Gtk, main_quit));
   $window->show_all();
   
   Gtk::main();
 

E um screeshot do resultado

captura_de_tela-testephp

Valeu =)

  1. Nenhum comentário ainda.
  1. Nenhum trackback ainda.