【问题标题】:wxWidgets - wxGrid - reading/writing non string cell valueswxWidgets - wxGrid - 读取/写入非字符串单元格值
【发布时间】:2016-06-07 21:43:27
【问题描述】:

我有一个 wxGrid 来编辑数值数据数组。

我想知道在不一直进行字符串到数字转换的情况下,将非字符串数据进出单元格的最佳方法是什么。 我使用 SetCellEditor() 来控制数据输入。

目前我用这个:

// numeric value into cell
str.clear();
str << val1;
m_grid4->SetCellValue(row, col, str);
..
// read value from back into variable
val = atoi(m_grid4->GetCellValue(row, col));

除了 atoi() 有点难看而且带有字符串流的模板函数会更好之外,有没有办法让非字符串值更好地进出单元格?

我正在查看编辑器和渲染器,但无法弄清楚。

【问题讨论】:

    标签: wxwidgets


    【解决方案1】:

    如果您担心效率,您几乎可以肯定应该使用派生自 wxGridTableBase 的自定义表类,而不是使用默认琐碎的 wxGridStringTable 实现,它将所有内容存储为字符串。然后,更不重要的是,如果它对您的情况有意义,您可以使用 wxGridCellNumberRenderer 它将调用您的表 GetValueAsLong() 方法而不是 GetValue()(它返回一个字符串)。

    这两个都在wxGrid sample 中进行了演示,尤其是那里的BugsGridTable

    祝你好运!

    【讨论】:

    • 我已经编译并使用了那个 wxGrid 示例,但没有看到我在寻找什么。我会仔细看看 wxGridTableBase
    • 看来我在这里有很多东西要学。我的网格只是一个普通的 wxGrid。未定义明确的表类型。我用wxFormBuilder 创建了它,它只做这一种网格。所以我想我将不得不通过代码创建它并使用wxGridTableBase
    • @ahagele,您不需要重新创建网格。只需创建一个从 wxGridTableBase 派生的自定义表并将其分配给网格。它仍然是 wxGrid,但它会使用你自己的表实现。
    猜你喜欢
    • 1970-01-01
    • 2012-07-19
    • 2015-11-28
    • 1970-01-01
    • 2013-01-16
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多