wxWidgets实战:wxAuiToolBar使用详解

函数

FindToolByPosition

FindToolByPosition 是 wxWidgets 框架中 wxAuiToolBar 类的一个成员函数,它用于根据工具栏上的位置查找对应的工具按钮。

FindToolByPosition 函数需要一个 wxPoint 类型的参数,该参数表示要查找的位置。

  • 如果在指定位置上找到了工具按钮,则返回该按钮的 ID;
  • 否则返回 -1。

使用 FindToolByPosition 函数可以方便地实现根据鼠标位置查找工具按钮的功能。

例如,可以在 wxAuiToolBar 控件上绑定鼠标左键单击事件处理程序,然后在事件处理程序中调用 FindToolByPosition 函数来查找用户单击的工具按钮。以下是一个示例代码:

cpp 复制代码
void MyFrame::OnToolBarLeftClick(wxMouseEvent& event)
{
    wxPoint pos = event.GetPosition();
    int toolId = toolBar->FindToolByPosition(pos);
    if (toolId != -1)
    {
        // 处理工具按钮单击事件
        // ...
    }
}

MyFrame::MyFrame()
{
    // 创建 wxAuiToolBar 控件
    toolBar = new wxAuiToolBar(this, wxID_ANY);

    // 绑定鼠标左键单击事件处理程序
    toolBar->Bind(wxEVT_LEFT_DOWN, &MyFrame::OnToolBarLeftClick, this);
}

在上面的代码中,当用户在 wxAuiToolBar 控件上单击鼠标左键时,将会调用 OnToolBarLeftClick 函数,并将鼠标位置传递给 FindToolByPosition 函数来查找用户单击的工具按钮。如果找到了工具按钮,则可以在事件处理程序中执行相应的操作。

事件

wxEVT_COMMAND_TOOL_CLICKED

wxEVT_COMMAND_TOOL_CLICKED 是一个 wxWidgets 事件,用于处理工具栏按钮被单击的事件

cpp 复制代码
 Connect( wxEVT_COMMAND_TOOL_CLICKED, wxAuiToolBarEventHandler( ACTION_BAR::onToolEvent ),nullptr, this );

在 wxWidgets 中,aEvent.Skip() 表示将事件传递给父窗口或下一个处理程序,而不是在当前处理程序中直接处理它。这对于多个处理程序需要处理同一事件时很有用,因为它允许其他处理程序继续对事件进行处理。

cpp 复制代码
void ACTION_BAR::onToolEvent( wxAuiToolBarEvent& aEvent )
{
    int            id   = aEvent.GetId();
    wxEventType    type = aEvent.GetEventType();
    ...
  }

wxEVT_AUITOOLBAR_RIGHT_CLICK事件

wxEVT_AUITOOLBAR_RIGHT_CLICK 是 wxWidgets 框架中 wxAuiToolBar 类的一个事件,它表示用户在 AUI 工具栏上右键单击了一个工具按钮或空白区域。当用户在 AUI 工具栏上右键单击时,该事件会被触发,并将相关信息(如右键单击的工具按钮的 ID)传递给事件处理程序。开发人员可以通过绑定 wxEVT_AUITOOLBAR_RIGHT_CLICK 事件处理程序来响应用户右键单击工具按钮或空白区域的操作,以便在用户右键单击时执行一些操作,例如显示上下文菜单或弹出窗口。

cpp 复制代码
  Connect( wxEVT_AUITOOLBAR_RIGHT_CLICK, wxAuiToolBarEventHandler( ACTION_BAR::onToolRightClick ), nullptr, this );
cpp 复制代码
void ACTION_BAR::onToolRightClick( wxAuiToolBarEvent& aEvent )
{
}

wxEVT_AUITOOLBAR_BEGIN_DRAG事件

wxEVT_AUITOOLBAR_BEGIN_DRAG 是 wxWidgets 框架中 wxAuiToolBar 类的一个事件,它表示用户开始拖动 AUI 工具栏上的一个工具按钮。当用户开始拖动一个工具按钮时,该事件会被触发,并将相关信息(如拖动的工具按钮的 ID)传递给事件处理程序。开发人员可以通过绑定 wxEVT_AUITOOLBAR_BEGIN_DRAG 事件处理程序来响应用户开始拖动工具按钮的操作,以便在用户开始拖动时执行一些操作,例如更新相关的控件或执行一些计算。

案例:为wxAuiToolBar添加滚动条

到底能不能为wxAuiToolBar添加滚动条,尝试了好几次都失败了。

相关推荐
破茧蝴蝶11 小时前
Python分布式爬虫完整教程
开发语言·python
Autumn_ing11 小时前
Design.md生成UI怎么验收?举例运营后台的颜色、状态和数据核对
前端·ui·ai·设计系统·paico·ai生成ui·design.md
狗凯之家源码网11 小时前
全新 PHP 轻量客服聊天室源码深度评测
开发语言·php·聊天室系统
远离UE412 小时前
UE5 Substrate Thin Film 源码拆析
开发语言·javascript·ue5
keyipatience12 小时前
JavaScript学习(1)书写位置,变量、数据类型、运算符
开发语言·前端·javascript·css·学习
朱涛的自习室12 小时前
我给 Gemini 4 和 DeepSeek 搞了套「末位淘汰」,AI 干活会更猛吗?(Day 3)
android·前端·后端
栈帧之外13 小时前
【C++】STL之set
开发语言·c++
catchadmin13 小时前
免费可商用 PHP 管理后台 CatchAdmin V5.4.1 发布,新增 MCP 支持
开发语言·php
java1234_小锋14 小时前
【技术专题】HTML5 网页技术 - HTML5简介 & HTML5 文档结构
前端·html·html5
jimy115 小时前
c++的 Type Traits (二、更详细版本)
开发语言·c++