现在这已经让我至少困扰了几天(可悲的是,晚上)。我想在Gtk +中写一个相当容易的cellrenderer。由于我只是绘制文本(加上cairo的添加),我从Gtk.CellRendererText(它是Vala + Gtk3顺便说一句)继承。 我在这里做了一个小例子:
class CellRendererTest : CellRendererText{
public override void render (Cairo.Context ctx, Widget tree,
Gdk.Rectangle background_area, Gdk.Rectangle cell_area,
CellRendererState flags) {
base.render (ctx, tree, background_area, cell_area, flags);
ctx.rectangle(0, 0, 20, 20);
ctx.fill();
}
}
class Test : Window{
public Test(){
TreeStore store = new TreeStore(1, typeof(string));
TreeView tv = new TreeView.with_model(store);
tv.insert_column_with_attributes (-1, "Foo",
new CellRendererTest(), "text", 0);
TreeIter iter;
store.append (out iter, null);
store.set (iter, 0, "first", -1);
store.append(out iter, null);
store.set (iter, 0, "second", -1);
store.append (out iter, null);
store.set (iter, 0, "third", -1);
add(tv);
this.show_all();
}
static void main(string[] args){
Gtk.init(ref args);
new Test();
Gtk.main();
}
}
所以我认为这会给树视图中的每个条目在左上角一个黑盒子,但事实上它只画了一次盒子。这个例子并没有说明这一点,但也不可能将盒子在同一位置抽出三次(我用不同的代码试过了)。
那么,有没有人知道如何在这里达到预期的效果?