【问题标题】:Allow child panel to handle mouse motion events允许子面板处理鼠标运动事件
【发布时间】:2012-06-14 15:42:17
【问题描述】:

我有一个具有以下布局的 GUI 应用程序:

wxFrame --> wxBoxSizer --> wxImagePanel

wxImagePanel 是一个自定义控件(可用here)。我稍微修改了它以处理鼠标事件(使用 EVT_MOTION),例如允许我平移图像的拖动。

现在,不幸的是,这在 Windows 上看起来很难看——背景是深灰色。推荐的方法是将add a wxPanel 发送到 wxFrame——这会使丑陋的背景消失。该应用程序现在的布局如下:

wxFrame --> wxBoxSizer --> wxPanel --> wxBoxSizer --> wxImagePanel (a custom control)

看起来好多了,但现在我添加的 wxPanel 正在抓取所有鼠标运动事件。他们没有通过子 wxImagePanel,所以我不能再平移我的图像了。

如何确保鼠标移动事件能够传递到子 wxImagePanel?

【问题讨论】:

    标签: c++ wxwidgets


    【解决方案1】:

    事情的正常顺序是

    wxFrame --> wxPanel --> wxBoxSizer

    我认为你会更好地使用它,像这样

    wxFrame --> wxImagePanel --> wxBoxSizer

    wxFrame --> wxPanel --> wxBoxSizer --> wxImagePanel

    【讨论】:

    • 我正在使用 wxFormBuilder,它似乎不允许直接将 wxPanel 添加到 wxFrame,而无需为框架使用 sizer。
    【解决方案2】:

    我已经通过wxWidgets forums 提问解决了这个问题。

    基本上,我的问题是 wxImagePanel 是 wxFrame 的孩子,而它应该是 wxPanel 的孩子。

    【讨论】:

      猜你喜欢
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 2018-08-15
      • 1970-01-01
      相关资源
      最近更新 更多