Gtk.CellRendererText with format



我想写一个自定义的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) 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 ();
    }
}

最新更新