wxWidgets - wxGrid - reading/writing 非字符串单元格值
wxWidgets - wxGrid - reading/writing non string cell values
我有一个 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() 有点难看并且带有 stringstream 的模板函数会更好之外,有没有办法让非字符串值更好地进出单元格?
我正在查看编辑器和渲染器,但无法弄明白。
如果您担心效率,您几乎肯定应该使用从 wxGridTableBase
派生的自定义 table class 而不是使用存储所有内容的默认琐碎 wxGridStringTable
实现作为字符串。然后,更不重要的是,如果它对你的情况有意义,你可以使用 wxGridCellNumberRenderer
它将调用你的 table GetValueAsLong()
方法而不是 GetValue()
(returns一个字符串)。
这两个都在 wxGrid sample 中进行了演示,请特别注意那里的 BugsGridTable
。
祝你好运!
我有一个 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() 有点难看并且带有 stringstream 的模板函数会更好之外,有没有办法让非字符串值更好地进出单元格?
我正在查看编辑器和渲染器,但无法弄明白。
如果您担心效率,您几乎肯定应该使用从 wxGridTableBase
派生的自定义 table class 而不是使用存储所有内容的默认琐碎 wxGridStringTable
实现作为字符串。然后,更不重要的是,如果它对你的情况有意义,你可以使用 wxGridCellNumberRenderer
它将调用你的 table GetValueAsLong()
方法而不是 GetValue()
(returns一个字符串)。
这两个都在 wxGrid sample 中进行了演示,请特别注意那里的 BugsGridTable
。
祝你好运!