app按钮防抖c++
时间: 2023-07-04 19:08:34 浏览: 54
防抖(Debouncing)是一种常用的技术,用于去除按钮或其他输入设备在短时间内发生的抖动(Bouncing),使得系统能够正确地响应用户的输入。在 C++ 中,可以通过以下方式实现按钮防抖:
```c++
#include <chrono>
#include <functional>
#include <iostream>
#include <thread>
class Button {
public:
Button(std::function<void()> callback) : callback_(callback) {}
void onPress() {
if (std::chrono::steady_clock::now() - last_press_time_ > debounce_time_) {
last_press_time_ = std::chrono::steady_clock::now();
callback_();
}
}
private:
std::function<void()> callback_;
std::chrono::steady_clock::time_point last_press_time_;
std::chrono::milliseconds debounce_time_{100}; // 防抖时间为 100 毫秒
};
// 示例代码
int main() {
Button button([]() { std::cout << "Button pressed!" << std::endl; });
while (true) {
// 模拟按钮按下事件
button.onPress();
std::this_thread::sleep_for(std::chrono::milliseconds(20)); // 模拟 20 毫秒的循环周期
}
return 0;
}
```
在上述示例代码中,Button 类表示一个按钮,它接受一个函数回调作为参数,当按钮被按下时,会调用该回调函数。在 Button 类的 onPress 函数中,通过计算当前时间与上次按下时间的时间差,判断是否需要执行回调函数。如果时间差小于防抖时间 debounce_time_,则不执行回调函数,否则更新上次按下时间并执行回调函数。在示例代码中,循环周期为 20 毫秒,即每 20 毫秒模拟一次按钮按下事件。