2014-03-27 30 views
1

我想更新列表的行或网格的wxwidgets中的单元格使用循环或回调函数,它在一秒钟内调用10次。但是应用程序会等待循环的最后一次运行,然后显示最后一个值。我尝试了refresh()和ForceRefresh(),但它不起作用。我怎么能做到这一点?wxwidgets快速定期数据更新

for(int i=0; i< 30000; i++) { 
    list->SetItem(itemIndex, 0, wxString::Format(wxT("%i"),i)); 
    //grid->SetCellValue(0, 0, wxString::Format(wxT("%i"),i)); 
} 

编辑:我的意思是输出(打印,流媒体)数据像时钟计数器或打印进度速度。使用虚拟样式也不会经常更新它。

回答

0

那么我从wxWidgets IRC得到了完整的答案。我应该在更新之前刷新。

for(int i=0; i< 30000; i++) { 
    list->SetItem(itemIndex, 0, wxString::Format(wxT("%i"),i)); 
    //grid->SetCellValue(0, 0, wxString::Format(wxT("%i"),i)); 
    MyFrame::Refresh(); 
    MyFrame::Update(); 
} 
1

我不确定代码中的listgrid是什么,但无论如何,这不是你应该如何做的。一次不会有30000个项目适合您的屏幕,那么为什么要设置所有这些项目的值?相反,使用“虚拟”wxListCtrlwxLC_VIRTUAL样式或(总是“虚拟”)wxGridwxDataViewCtrl,只需更新数据并在更改后刷新项目。 GUI控件将负责显示可见的更新值项目只有尽可能快地显示。

+0

Tx,我看着虚拟的,它可以工作。但是我希望能够将数据直接打印到数据容器中,而无需将其推入数据容器,因此当它喜欢时可以通过它进行枚举。如何在列表单元格内实现时钟计数器或数据传输速率或进度...。我只想直播打印我的数据流。 – user2830194