我使用 TreeView 和 ListStore 来显示 GUI 表。如何为定义的行设置颜色?有没有样品怎么做?通过谷歌,我找到了一个仅适用于 SimpleList 的示例,但我需要它用于 ListStore。
问问题
968 次
1 回答
1
有两种方法可以在 TreeView 上设置颜色。第一个是:设置一个将保留颜色的列,然后使用TreeViewColumn“set_attributes”的方法来设置单元格渲染器的颜色。
my $list_store = Gtk2::ListStore("Glib::String", "Glib::String"); # keep one note and color
my $tree_view = Gtk2::TreeView->new($list_store);
my $col = Gtk2::TreeViewColumn->new;
my $rend = Gtk2::CellRendererText->new;
$col->pack_start($rend, TRUE);
$col->set_attributes($rend,'text' => $i++, 'background' => 1,);
$tree_view->append_column($col);
第二种方法是:不要使用额外的列来保持颜色,而是使用 TreeViewColumn 的 set_cell_data_func 方法:
$col->set_cell_data_func($rend, sub {
my ($column, $cell, $model, $iter) = @_;
if ($model->get($iter, 0) eq 'Good') {
print "Red\n";
$cell->set('background' => 'red');
} else {
$cell->set('background' => 'white');
}
});
于 2012-12-28T13:07:47.563 回答