如何删除wxDataviewCtrl和wxDataViewVirtualListModel中的多个行

时间:2014-07-14 11:23:19

标签: wxwidgets

我使用wxDataviewCtrl和wxDataViewVirtualListModel来显示一长串数据,wxDataViewVirtualListModel有3个wxArrayString来存储数据。

目前,当我想删除一行时,我将删除3 wxArrayString中的数据并调用RowDelete(row)来通知wxDataViewCtrl。

但是,当我想删除数百行时,我需要使用循环删除它们,这非常慢。

如何更快地删除多行?

谢谢

2 个答案:

答案 0 :(得分:2)

对不起,我想挖一个旧的线程,但这跳到了搜索的顶部,我可能有一个可以解决问题的解决方案。 wxDataView示例未完全显示如何清除整个列表。这是我的操作方法,看起来非常快:

在派生的wxDataViewVirtualListModel类中,添加一个函数以清除模型中的所有列数据。像这样:

void Clear(){
m_myDescriptionColValues.clear();
m_myNumberColValues.clear();
m_myFooColValues.clear();
Reset(0); // This is like DeleteRows(), but better.
}

在wxDataView示例中,这将放在MyListModel类中。当您想清除模型并用新数据重新填充控件时,请调用此函数。在我的程序中,它的速度非常快,有数百项。

答案 1 :(得分:0)

至少,您应该使用一个RowsDeleted()来电,而不是多个RowDeleted()。您也可以使用比3个并行阵列更高效的表示,尽管我严重怀疑它只是几百行的瓶颈 - 但是像往常一样,您需要进行分析以确定这是否真的不是这个案子。