wxTreeItemId如何获取数据



我尝试创建自己的wxTreeItemId版本,它存储额外的数据。下面的缝:

TreeItemId.h

#ifndef TREE_CTRL
#define TREE_CTRL
#include "wx/treectrl.h"
#include "Particle System.h"
class TreeItemId : public wxTreeItemId
{
public:
    TreeItemId(ParticleSystem* system);
private:
    ParticleSystem* particleSystem;
};

TreeItemId.cpp

TreeItemId::TreeItemId(ParticleSystem* system) 
: wxTreeItemId()
{
    particleSystem = system;
}

我想使用一个事件来获得选中的TreeItem,但是我不能使用我的TreeItem类而不是标准的方法。

我想在

这一行做点什么
void TopRightPanel::OnSelChanged(wxTreeEvent& event)
{
    TreeItemId *item = (TreeItemId)event.GetItem();
}

这不起作用,虽然…任何建议都将不胜感激。我需要使用我自己版本的wxTreeItemData吗?

您应该从wxTreeItemData而不是wxTreeItemId继承您的数据对象。假设你有MyItemData : public wxTreeItemData {};然后是

wxTreeItemId itemId = event.GetItem();
MyItemData * data = (MyItemData *)m_MyTreeCtrl->GetItemData(itemId);
if(data) { /* Doo what you need here */ }

为了设置项目数据,您需要使用InsertItem()方法并在其中指定数据对象。或者对现有的项目使用SetItemData(),并将项目ID和数据对象传递给该方法。

相关内容

  • 没有找到相关文章

最新更新