【问题标题】:why are Key events c++ WxWidgets not being caught?为什么关键事件 c++ WxWidgets 没有被捕获?
【发布时间】:2015-04-07 13:45:49
【问题描述】:

大家好

我正在使用 WxWidgets 2.8。我使用文本框创建了一个类似网格的界面。我想更改文本框中的值,只需使用箭头键导航到它们。

我已经设置了一个放置文本框的面板,然后添加了一个 onkeydown 事件,当按下某个键时它应该只显示一条消息。这不起作用。

我已经尝试过 oncharevent,甚至将事件添加到 wxFrame。

为什么抓不到关键事件?

【问题讨论】:

    标签: c++ wxwidgets


    【解决方案1】:

    只有当前获得焦点的窗口才会获得关键事件,如果框架有任何子项(例如文本控件),则框架将永远不会获得焦点。

    还请考虑将 wxWidgets 3.0 用于任何新代码,特别是它提供了Bind(),如果您想要这样做,可以方便地在一个地方处理来自所有控件的关键事件。

    【讨论】:

    • 感谢 VZ,我会尝试 3.0,但现在我已经求助于使用计时器和轮询键盘。你能告诉我为什么这个库被设置成只捕获焦点窗口上的关键事件,这真的很不方便吗?
    • 使用计时器轮询键盘是一个非常糟糕的解决方案,您遇到问题。即使使用 2.8,您也可以(并且应该)改用 Connect()PushEventHandler()。至于键盘事件,这是您在绝大多数情况下所期望的。
    • 好的。我必须承认我是这方面的新手。我已经看到自动化代码使用了 connect(),但并没有过多关注它的实际工作方式。我会阅读它。感谢您的所有建议。
    猜你喜欢
    • 1970-01-01
    • 2011-01-31
    • 2010-11-25
    • 2015-10-29
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    相关资源
    最近更新 更多