QT双击键盘事件
QT double click keyboard event
我知道我可以使用从QT C++程序读取单个键盘按键压力
void keyPressEvent(QKeyEvent*);
功能。
但是,如果我想在同一键盘键的两个连续压力上分配一个动作,间隔不超过100ms(或任何其他固定超时),我该怎么办?
当然,我的意思是,另一个动作被分配给同一个键的单个压力,如果超时到期而没有第二个压力,我必须执行另一个例程。
有没有比用定时器创建第二个线程更简单的解决方案?
我讨厌为这么微不足道的任务再创建一个线程的想法。
您可以使用numPress计数器来计算按键次数。然后在第一次按键500毫秒后立即启动singleShot。500毫秒后,您可以检查按键次数并决定应调用哪个功能。
void SO_Qt::keyPressEvent( QKeyEvent* key)
{
if (key->key() == Qt::Key_K)
{
numPress_++;
if (numPress_ == 1)
{
QTimer::singleShot(500, this, SLOT(keyKPressed()));
}
}
}
void SO_Qt::keyKPressed()
{
if (numPress_ == 1) {
func_1();
} else if (numPress_ == 2) {
func_2();
}
numPress_ = 0;
}
void SO_Qt::func_1()
{
QMessageBox::information(this, "1","1");
}
void SO_Qt::func_2()
{
QMessageBox::information(this, "2","2");
}
相关文章:
- SDL2 无法捕获控制台键盘事件?
- GTKMM:如何将键盘事件附加到绘图区域?
- OpenCV 为键盘事件设置回调
- Qt应用程序不响应鼠标和键盘事件
- 虚拟键盘在焦点事件上隐藏
- 如何处理 OpenSceneGraph 键盘输入事件中的区分大小写
- 如何在Windows 8中以编程方式触发鼠标和键盘事件
- 捕获 HID 键盘事件
- 如何在 Ubuntu 中通过语音命令生成键盘、鼠标事件
- 捕获Linux/Ubuntu(屏幕捕获 鼠标/键盘事件)中的窗口事件
- 检测Linux C 上的键盘和密钥事件
- 未捕获QT事件筛选器中的键盘快捷键(强制文本为大写)
- 捕获鼠标但未聚焦窗口时捕获键盘事件(Win32)
- 键盘事件:订单是否得到保证
- 监视进程内的键盘事件(进程范围)
- 如何在 Windows 8 上捕获触摸键盘加载事件
- wxWidgets 键盘事件
- SFML - 键盘事件
- 在Qt C++中通过类管理键盘事件
- 管理Win32应用程序和QWinMigrate之间的键盘事件