c++ - wxSpinCtrl 不生成事件

标签 c++ events wxwidgets

我创建了一个名为 ValCtrl 的类,它扩展了 wxPanel。每个实例管理一个 wxCheckBox、一个 wxSlider 和一个 wxSpinCtrl。我将事件动态绑定(bind)到 ValCtrl 中的方法。

wxSlider 和 wxCheckBox 事件处理正常,但我对 wxSpinCtrl 做了一些错误,我的处理程序没有被调用。该程序编译并运行,我在文档中没有找到足够的帮助。有什么想法吗?

这是我的实例化:

linkCheckBox = new wxCheckBox(this, wxID_ANY, stim->name, wxPoint(-1,-1), wxSize(linkCheckBoxSX, defaultS));

slider = new wxSlider(this, wxID_ANY, 0, 0, 100, wxPoint(-1,-1), wxSize(sliderSX, sliderSY), wxSL_HORIZONTAL);
slider->SetRange(stim->minValue, stim->maxValue);
slider->SetValue(stim->value);

spinCtrl = new wxSpinCtrl(this, wxID_ANY, "0", wxPoint(-1,-1), wxSize(spinCtrlSX, spinCtrlSY));
spinCtrl->SetRange(stim->minValue, stim->maxValue);
spinCtrl->SetValue(stim->value);

这是我的绑定(bind):

slider->Bind(wxEVT_SCROLL_THUMBTRACK, &ValCtrl::OnScroll, this);
slider->Bind(wxEVT_SCROLL_CHANGED, &ValCtrl::OnScroll, this);
spinCtrl->Bind(wxEVT_SPIN, &ValCtrl::OnSpin, this);
spinCtrl->Bind(wxEVT_COMMAND_TEXT_ENTER, &ValCtrl::OnEntered, this);
linkCheckBox->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &ValCtrl::OnCheck, this);

这是我的处理程序方法声明:

void OnCheck(wxCommandEvent& event);
void OnEntered(wxCommandEvent& event);
void OnScroll(wxScrollEvent& event);
void OnSpin(wxSpinEvent& event);

最佳答案

阅读标题并找到 wxEVT_COMMAND_SPINCTRL_UPDATED。我正在使用 2.9,它显然改变了自 2.8 以来 wxSpinCtrl 事件的调度和捕获方式。

现在工作。以下是对任何其他好奇方的更正。

spinCtrl->Bind(wxEVT_SPIN, &ValCtrl::OnSpin, this);
spinCtrl->Bind(wxEVT_COMMAND_TEXT_ENTER, &ValCtrl::OnEntered, this);

变成:

spinCtrl->Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, &ValCtrl::OnSpin, this);

关于c++ - wxSpinCtrl 不生成事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9097180/

相关文章:

c++ - 在 C++ 中丢弃模板参数是否安全?

validation - Primefaces 范围 slider 最大值和最小值

events - 在 Silverlight 4 Datagrid 上实现双击事件

ubuntu - wxWidgets安装后找不到wxWebView

python - wxPython:将文件拖到窗口中以获取文件路径

wxWidgets 使用 'new' 关键字

c++ - 我可以在C++头文件中 “hide”定义吗

C++进程管理: WinAPI "SetProcessShutdownParameters " in Linux?

c++ - 有没有办法将基数 2^64 数字转换为其字符串形式的基数 10 值,或在 C 或 C++ 中以标准输出显示它,而不使用大数字库?

java - 如何强制对组件执行操作?