2

我使用 TreeView 和 ListStore 来显示 GUI 表。如何为定义的行设置颜色?有没有样品怎么做?通过谷歌,我找到了一个仅适用于 SimpleList 的示例,但我需要它用于 ListStore。

4

1 回答 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 回答