带格式的Gtk.CellRendererText

时间:2014-11-09 10:58:41

标签: gtk vala

我想编写一个自定义CellRenderer来格式化它的内容。它不应显示-905.65000,而应显示-905.65 €。我已经可以使用Gtk.TreeCellDataFunc来实现这一点,但使用自定义CellRenderer会更优雅。

以下代码给出了分段错误:

class CellRendererTextFormat : Gtk.CellRendererText {
    public new string text {
      get { return text; }
      set {
        char[] a = new char[16];
        text = double.parse(value).format(a,"%-.2f €");
      }
    }

    public CellRendererTextFormat () {
        GLib.Object ();
    }
}

我应该怎么做呢?

1 个答案:

答案 0 :(得分:1)

有两个问题:

1)text被分配了a的内存,该内存被释放。您需要将其分配给超出set范围的持久内存。

2)value现在是一个字符串(因为您只能分配相同类型的属性值)。你真的有字符串吗,或者你只是为了让它起作用而加入parse

相反:

class CellRendererEuroValue : Gtk.CellRendererText {
    char[] euro_str = new char[16];
    private double _euro_value;
    public double euro_value {
      get { return _euro_value; }
      set {
        _euro_value = value;
        value.format(euro_str,"%-.2f €");
        text = (string) euro_str;
      }
    }

    public CellRendererTextFormat () {
        GLib.Object ();
    }
}