【问题标题】:wxAuiToolBar updated not properlywxAuiToolBar 更新不正确
【发布时间】:2014-11-26 21:37:49
【问题描述】:

有一个 wxAuiToolBar 在运行时添加和删除项目。 不幸的是,在添加或删除项目时,工具栏没有正确更新(绘制)

创建工具栏:

_toolbar = new wxAuiToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
                                     wxAUI_TB_DEFAULT_STYLE |
                                     wxAUI_TB_OVERFLOW |
                                     wxAUI_TB_TEXT | 
                                     wxAUI_TB_HORZ_TEXT);
_mgr.AddPane(_mdi_frames_toolbar, wxAuiPaneInfo().      
                    Name("tbxxx").Caption("xxx caption").ToolbarPane().Top().Gripper(true).Dockable(true).Floatable(true).CaptionVisible(false));
...
_mgr.Update();

添加项目时我会做什么:

            wxAuiToolBarItem* pItem=_toolbar->AddTool(wxID_TCMDI_FRAME_TOOL_TB + pchild->uid(),pchild->GetName(),wxNullBitmap,"",wxITEM_NORMAL);                                    
            _toolbar->Realize();

这使新工具可见,但工具栏的上下框架在 新工具。重复这一点,它迟早会产生垃圾。 似乎工具栏本身没有正确更新。

如果我添加

_mgr.Update();

在添加工具之后,在我通过抓手移动工具栏之前,该工具不可见。

谁能告诉我要怎么做才能正确更新 aui 工具栏 添加了一个工具(在初始添加工具之后,效果很好)?

提示:跳过 size 事件的宿主框架。

我在 Windows 7 中使用 wxWidgets 3.01,调试 64 静态构建。 在发布版本中也会发生同样的情况。

谢谢

【问题讨论】:

    标签: wxwidgets wxauitoolbar


    【解决方案1】:

    问题中的代码没有将 _toolbar 添加到 AUI 管理器,但我认为这只是创建问题时的复制粘贴问题。

    看起来有点 hacky,但是如何将工具栏窗格从 AUI 管理器中分离出来,添加工具栏项,然后重新附加到 AUI 管理器?

    _mgr.DetachPane(_toolbar);
    wxAuiToolBarItem* pItem = _toolbar->AddTool(
          wxID_TCMDI_FRAME_TOOL_TB + pchild->uid(),
         pchild->GetName(),
         wxNullBitmap,
         "",
         wxITEM_NORMAL
    );
    wxAuiPaneInfo info;
    info.Name("tbxxx")
        .Caption("xxx caption")
        .ToolbarPane().Top()
        .Gripper(true).Dockable(true)
        .Floatable(true).CaptionVisible(false);
    _mgr.AddPane(_toolbar, paneInfo);
    

    【讨论】:

    • 从 3.0.2 开始,这仍然是一个问题。如果动态添加 wxAuiToolBarItems,wxAuiToolBars 将无法正确绘制。此外,如果您在 wxAuiToolBarItems 周围拖动其他窗格,您动态添加的将消失,直到您移动 wxAuiToolBar。分离和重新连接似乎可以解决问题。
    猜你喜欢
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 2013-09-30
    相关资源
    最近更新 更多