Crear  Editar  FrontPage  Indexes  Buscar  Cambios  History  RSS  Login

tut-treeview-components

Componentes: Modelo, Render, Columna, Vista

El concepto más importante de Gtk::TreeView es la completa separación entre los datos y como estos se muestran en pantalla. Esto se conoce normalmente como diseño Model/View/Controller (MVC). Datos de diferentes tipos (strings, números, imágenes, etc.) son almacenados en un 'modelo'. Entonces se indica a la 'vista' que datos hay que mostrar, dónde mostrarlos y cómo mostrarlos. Una de las ventajas de este sistema es que se pueden tener múltiples vistas que muestren los mismos datos (el contenido de un directorio, por ejemplo) de diferentes maneras, o de la misma forma varias veces, usando una sola copia de los datos. Esto evita duplicar información y esfuerzo por parte del programador si los mismos datos son reusados en diferentes contextos. De la misma forma, cuando los datos de un modelo se actualizan, todas las vistas lo hacen también.

Entonces, mientras Gtk::TreeModel se usa para almacenar datos, hay otros componentes que determinan qué datos aparecerán en el Gtk::TreeView y cómo serán mostrados. Estos componentes son Gtk::TreeViewColumn y Gtk::CellRender?. Un Gtk::TreeView está compuesto por columnas. Estas son las columnas que el usuario percibe como columnas reales. Tienen una cabecera presionable con un título de columna que puede ser ocultado, redimensionado y ordenado. Las columnas de un Gtk::TreeView no muestran ningún dato, tan solo se usan como dispositivos para representar la parte de usuario de un TreeView (ordenar etc.) y para servir como contenedores para los componentes que realmente muestran los datos en pantalla, la familia de objetos Gtk::CellRender? (los llamo objetos porque no son widgets). Hay varios tipos de renders de celda especializados en mostrar cierto tipo de datos como strings, imágenes, botones. Los veremos más adelante.

Los renders se empaquetan en las columnas del TreeView para mostrar los datos. Una columna necesita tener al menos un render de celda, pero puede contener más de uno. Por ejemplo, si se quiere mostrar la columna 'Nombre de Archivo' donde cada archivo tenga un pequeño icono a la izquierda indicando el tipo de archivo, se deben empaquetar un Gtk::CellRendererPixbuf y un Gtk::CellRendererText el la columna. Empquetar renders en una columna es similar a empquetar widgets en un Gtk::HBox

Ultimas actualizaciones:2011/06/05 23:13:37
Clave:
Referencias:[tut-treeview]