You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

wxWidgets C++自定义事件无法传播问题求助

wxWidgets C++自定义事件无法传播问题求助

各位好,我在wxWidgets中自定义了一个用于传递Card类实例的事件,但目前遇到了事件无法正常传播到目标窗口的问题,想请大家帮忙排查下问题所在。

我先贴一下目前的代码实现:

自定义CardEvent类的实现

#include "card.hpp"

class CardEvent: public wxEvent
{
public:
    CardEvent(wxEventType eventType, int winid, const Card &carddata)
        : wxEvent(winid, eventType),
          m_card(carddata)
    {
    }
 
    // 访问器方法
    Card GetCard() const { return m_card; }

    // 实现基类的纯虚函数
    virtual wxEvent *Clone() const { return new CardEvent(*this); }
 
private:
    const Card m_card;
};

wxDECLARE_EVENT(EVT_CARDADDED, CardEvent);

在MainWindow中的事件定义

wxDEFINE_EVENT(EVT_CARDADDED, CardEvent);

MainWindow中绑定事件

this->Bind(EVT_CARDADDED, &MainWindow::OnCardAdded, this);

在另一个wxPanel子类中发送事件

void BlockCardPanel::OnClickAddCard(wxCommandEvent &event)
{
    // 这里是我发送事件的代码
    Card newCard = GetCurrentCard(); // 假设这是获取要传递的Card实例
    CardEvent cardEvent(EVT_CARDADDED, this->GetId(), newCard);
    // 我尝试用ProcessEvent或者QueueEvent发送,但都没触发目标回调
    this->ProcessEvent(cardEvent);
}

我是照着wxWidgets的文档步骤来写的,但发送事件后,MainWindow里的OnCardAdded回调始终没触发,有没有大佬能帮我看看哪里出问题了?比如事件发送的方式不对,还是自定义事件的实现有遗漏的细节?

备注:内容来源于stack exchange,提问作者Infofly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 09:48:04