在wxDataViewCtrl中更改展开/折叠图标

时间:2015-10-18 17:18:29

标签: c++ wxwidgets

我想用wxDataViewCtrl中的图标替换展开/折叠图标。

enter image description here

我无法找到设置展开/折叠图标的方法。 有没有可用的API?

我是否需要直接修改wxDataViewCtrl源?您以前的经验可以帮助我。

2 个答案:

答案 0 :(得分:1)

首先使用wxDataViewCtrl的要点是它包装了相应的本机控件,因此不支持更改其外观。

这就是说,如果你正在使用它的通用实现,就像在MSW下一样,你可以通过定义一个自定义wxRendererNative派生类并覆盖它的DrawTreeItemButton()方法来实际改变它。 。但这会影响绘制树状按钮的所有其他控件,显然包括泛型wxTreeCtrl本身,还包括wxPropGrid。一般来说,我不建议这样做。

答案 1 :(得分:0)

我不知道这是对的还是错的,在这里我找到了一种基于VZ.suggestion实现我的东西的方法。

response.sendRedirect()

这样我可以覆盖

class MyRenderer : public wxDelegateRendererNative
{
public:
    MyRenderer() : wxDelegateRendererNative(wxRendererNative::GetDefault()) { }

    virtual void DrawTreeItemButton(wxWindow *win,
        wxDC& dc,
        const wxRect& rect,
        int flags = 0)
    {
        MyCustomCtrl* pWin = dynamic_cast<MyCustomCtrl*>(win->GetParent());
        if (pWin != nullptr)
        {
            // Draw my choice of expand/collapse button.
        }
        else
        {   // Do not affect other controls that are using this drawing.
            wxRendererNative::GetDefault().DrawTreeItemButton(win, dc, rect, flags);
        }
    }
};

以及更多本土绘图。