ZBLOG

duilib 中Label图标和button图标绑定同一点击事件

要实现在DuiLib中,使Label控件的图标和Button控件的图标绑定同一点击事件,可以通过以下步骤来实现:

  1. 创建一个自定义的Button控件类,并重写其OnClick方法。
class CMyButton : public CButtonUI
{
public:
    virtual void OnClick(TNotifyUI& msg) override
    {
        // 在此处处理按钮点击事件
        
        // 如果需要同时触发Label的点击事件,可以通过发送消息方式通知Label
        
        // 发送消息通知Label控件,msg.pSender为当前按钮控件指针
        ::PostMessage(m_pManager->GetPaintWindow(), WM_USER+1, (WPARAM)msg.pSender, 0);
        
        // 调用基类OnClick方法,确保原有按钮的点击事件也被执行
        CButtonUI::OnClick(msg);
    }
};
  1. 创建一个自定义的Label控件类,并处理接收到的消息。
class CMyLabel : public CLabelUI
{
public:
    virtual void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue) override
    {
        if (_tcsicmp(pstrName, _T("linkedbutton")) == 0) {
            // 获取与该Label关联的按钮名称,并保存下来
            
            m_sLinkedButton = pstrValue;
            
            return;
        }
        
        // 调用基类SetAttribute方法,以处理其他属性设置逻辑
        CLabelUI::SetAttribute(pstrName, pstrValue);
    }

    virtual void DoEvent(TEventUI& event) override
    {
        if (event.Type == UIEVENT_BUTTONDOWN && event.pSender == this) {
            // 如果接收到Label自身的点击事件,执行原有的处理逻辑
            
            // 调用基类DoEvent方法
            CLabelUI::DoEvent(event);
            
            return;
        }
        
        if (event.Type == UIEVENT_USER + 1 && event.pSender->GetName() == m_sLinkedButton) {
            // 如果接收到与该Label关联按钮的消息,并且消息发送者为该按钮,执行绑定的点击事件逻辑
            
            // 在此处处理绑定的点击事件
        }
        
        // 调用基类DoEvent方法,以处理其他事件类型
        CLabelUI::DoEvent(event);
    }

private:
    CDuiString m_sLinkedButton;  // 保存与该Label控件关联的按钮名称
};
  1. 在XML布局文件中使用自定义的Label和Button控件,并设置它们之间的关联。
<CDuiWindow>
    <CMyButton name="btnLink" text="Click Me" />
    <CMyLabel linkedbutton="btnLink" text="Click the button or label" />
</CDuiWindow>

通过以上步骤,你可以实现在DuiLib中使Label控件和Button控件的图标绑定同一点击事件。当按钮被点击时,会发送一个自定义消息给与其关联的Label控件,从而触发相关操作。注意在具体实现中根据需要调整代码,并确保正确处理相关消息和事件。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=16817

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?