You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

wxWidgets中DataView容器项仅显示一列的问题求助

wxWidgets DataView容器项仅显示一列问题

我创建了一个包含3列的DataView组件,添加了两个项:

  • 无子女的非容器项:正常显示全部3列
  • 有子女的容器项:仅显示一列

(无子女项展示效果:3列内容完整显示;有子女项展示效果:仅第一列可见,其余列未渲染)

解决方法

  1. 为容器项的每一列提供数据
    容器项不会自动填充多列数据,需确保数据模型为容器项的所有列返回对应值。以wxDataViewModel为例,在GetValue方法中处理所有列:
virtual void GetValue(wxVariant& variant, const wxDataViewItem& item, unsigned int col) const override
{
    MyData* data = static_cast<MyData*>(item.GetID());
    if (!data) return;

    switch(col)
    {
        case 0: variant = data->name; break;
        case 1: variant = data->val1; break;
        case 2: variant = data->val2; break;
        default: break;
    }
}
  1. 设置合理的列宽
    检查列宽设置,避免容器项的展开箭头挤压其他列。手动指定列宽:
dataViewCtrl->SetColumnWidth(0, 160);
dataViewCtrl->SetColumnWidth(1, 120);
dataViewCtrl->SetColumnWidth(2, 120);
  1. 确保容器项所有列都标记为有数据
    在数据模型的HasValue方法中,为容器项的所有列返回true,避免控件隐藏无数据标记的列:
virtual bool HasValue(const wxDataViewItem& item, unsigned int col) const override
{
    return true;
}

内容的提问来源于stack exchange,提问作者oqamm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 17:32:14