Enquanto é muito fácil criar layouts dinamicos com GtkBox, é muito difÃcil posicionar widgets para, que por exemplo, os labeis na esquerda do widget tenham a mesma largura, sem importar o seu conteúdo. Se você precisa de layous em forma de tabela, GtkTable é a escolha certa. Widgets podem ocupar várias linhas e colunas, e podem ter margens de prenchimento diferentes.
Exemplo 7.2. Layout em forma de tabela
<?php
$w = new GtkWindow();
$w->set_title('GtkTable test');
$w->connect_simple('destroy', array('gtk', 'main_quit'));
$lbl1 = new GtkLabel('Email address:');
$lbl2 = new GtkLabel('Id:');
$lbl3 = new GtkLabel('Name:');
$align3 = new GtkAlignment(0.0, 0.5, 0, 0);
$align3->add($lbl3);
$txt1 = new GtkEntry();
$txt2 = new GtkEntry();
$txt3 = new GtkEntry();
$table = new GtkTable(2, 2);
$table->attach($lbl1 , 0, 1, 0, 1, 0);
$table->attach($lbl2 , 0, 1, 1, 2, 0);
$table->attach($align3, 0, 1, 2, 3, Gtk::FILL);
$table->attach($txt1 , 1, 2, 0, 1);
$table->attach($txt2 , 1, 2, 1, 2);
$table->attach($txt3 , 1, 2, 2, 3);
$w->add($table);
$w->show_all();
Gtk::main();
?> |
Ao executar o exemplo, você verá que o label Id esta centrado horizontalmente. Por padrão, widgets são completados em ambas as direções e ocupam todo o espaço disponÃvel, o que esta bom para a maioria dos widgets. Para GtkLabel estretanto, isto não é o melhor: Labels devem estar alinhados em um lado. Já que a função set_justify() justifica o texto apenas para labels de multiplas linhas, você precisa usar um GtkAlignment para alinhar o label propriamente - label Name mostra o resultado.