我想使用循环或每秒调用 10 次的回调函数更新 wxwidgets 中列表的行或网格的单元格。但是应用程序会等到循环的最后一次运行,然后显示最后一个值。我尝试了 refresh() 和 ForceRefresh() 但它不起作用。我怎样才能做到这一点?
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));
}
编辑:我的意思是像时钟计数器或打印进度率一样实时输出(打印、流式传输)数据。使用虚拟样式也不会经常更新它。
最佳答案
我不确定您的代码中的 list
和 grid
是什么,但无论如何,这不是您应该做的。 30000 个项目不可能同时显示在您的屏幕上,那么为什么要设置所有项目的值呢?相反,使用“虚拟”wxListCtrl
,即使用 wxLC_VIRTUAL
样式,或(始终“虚拟”)wxGrid
或 wxDataViewCtrl
并在更改后更新您的数据并刷新项目。 GUI 控件将负责尽快只显示可见项的更新值。
关于c++ - wxwidgets 快速定期数据更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22698986/