ST意法半导体
直播中

贾永世

8年用户 1901经验值
私信 关注
[问答]

求助,有没有办法在按下按钮而不是释放按钮时触发按钮?

我构建了一个打开 LED 灯的简单项目。我希望在按下按钮时触发事件,而不是在按下并释放按钮时触发。代码中是否有一个地方可以通过简单的更改来实现这一点?










回帖(1)

张百玲

2023-1-4 09:40:43
幸运的是,您拥有框架中按钮的源代码。“普通”按钮(发布时触发)继承的类称为抽象按钮。正如您从源代码中看到的那样,它在发布时触发。


  • #include

  • namespace touchgfx
  • {
  • void AbstractButton::handleClickEvent(const ClickEvent& event)
  • {
  •     bool wasPressed = pressed;
  •     pressed = (event.getType() == ClickEvent::PRESSED);
  •     if ((pressed && !wasPressed) || (!pressed && wasPressed))
  •     {
  •         // Pressed state changed, so invalidate
  •         invalidate();
  •     }
  •     if (wasPressed && (event.getType() == ClickEvent::RELEASED) && action)
  •     {
  •         // This is a click. Fire callback.
  •         if (action->isValid())
  •         {
  •             action->execute(*this);
  •         }
  •     }
  • }
  • } //namespace touchgfx

您可以创建自己的 Button 基类来执行其他操作。在某种程度上,您可以说 AbstractButton 可以称为 TriggerOnReleasedButton,或类似的名称。
下面是新的 TriggerOnPressedButton 基类的一些伪代码。


  • #include

  • void TriggerOnPressedButton::handleClickEvent(const ClickEvent& event)
  • {
  •   ...
  •     if ( (event.getType() == ClickEvent::PRESSED) && action)
  •     {
  •         // ButtonPress. Fire callback.
  •         if (action->isValid())
  •         {
  •             action->execute(*this);
  •         }
  •     }
  • ...
  • }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分