List控件添加子项后显示范围不变

llsll21 2010-07-26 10:27:22
我做了一个List控件,因为项比较多,所以,需要有滚动条拖拉才能显示全部子项。
我通过程序向里面插入了几个子项,它的显示范围没有改变。例如我在索引为2的位
置插入,新插入的子项能够看到,但最后面的子项看不到了,滚动条的宽度没有改变。
请问插入新的项后还要做什么操作才能让这个控件刷新吗?我的代码如下:

void List::AddChild(Widget *pChild, int index /* = -1 */)
{
if (NULL == pChild) return;

Widget::AddChild(pChild, index); //should place it here!

if (-1 == index)
{
IVectorModel_Add(m_pVectorMod, (void*)pChild);
}
else
{
IVectorModel_InsertAt(m_pVectorMod, index, (void*)pChild);
}
}
...全文
1649 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
llsll21 2010-08-01
  • 打赏
  • 举报
回复
还未解决,暂时放这里吧。
givenup 2010-07-26
  • 打赏
  • 举报
回复
好像不需要做什么其他的动作,model的改变会使得widget进行重画的。
givenup 2010-07-26
  • 打赏
  • 举报
回复
既然这样的话,我想只是调整的问题了。看看listwidget和scrollbarwidget的相关属性,调整下,以应该就OK了.
Good Luck!
llsll21 2010-07-26
  • 打赏
  • 举报
回复
是一致的,它不是显示不出来新添加的内容,而是显示区域不变,把原来下面的内容挤掉了。还有就是
void List::ListWidget_PickIndexer(void *pRenderListBox, int nIndex, boolean bSelected)
{
List* pThis = static_cast<List*>(pRenderListBox);
Widget* pObject = (Widget*)pThis->GetChild(nIndex);
JASSERT(NULL != pObject);

if (NULL == pObject)
return;



IWidget_SetVarItemSize(pThis->GetWidget(), pObject->GetRect().dy);
//((Widget*)m_pWidget)->Show(JNull);
}
把这个函数的内容注释掉,滚动条就可以根据内容自动变化了。item的高度是根据
nErr = IWidget_SetItemHeight(piwList, 30);来的。
givenup 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 llsll21 的回复:]
我也是这么想的,可我明明插入了,却没有重画。郁闷
[/Quote]
确认下插入的内容与listwidget所修饰的itemwidget所需要的结构体是一致的吗,包括结构体成员的顺序等等
llsll21 2010-07-26
  • 打赏
  • 举报
回复
我也是这么想的,可我明明插入了,却没有重画。郁闷

2,853

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧