关键事件处理
Key event handling
本文关键字:事件处理 更新时间:2023-10-16
目前我想处理基本的按键处理;例如,如果按下键,请执行此操作。但是,这应该有自己的类还是在单个函数中完成?Qt有一种记录关键事件的方法,但我不知道如何进行。我本可以:
void keyPrHandle(QKeyEvent *Ev)
{
if (Ev->key() == Qt::Key_G)
ui->label->setText(Ev->text());
}
否则,我将不得不构建一个处理关键事件的类。我不知道Qt如何处理关键事件,也不知道我应该如何实现它。
您可以在派生类中执行此操作。 假设您有 QBase 和 QDerive 类。然后,您可以重新定义事件处理程序:
void QDerived::keyPressEvent(QKeyEvent *Ev)
{
if (Ev->key() == Qt::Key_G)
//do something
QBase::keyPressEvent(Ev);
}
同样在QDerive类中:
protected:
void keyPressEvent(QKeyEvent *Ev);
您还可以使用事件过滤器处理事件而无需子类化:
http://qt-project.org/doc/qt-4.8/eventsandfilters.html#event-filters
每个QWidget
都处理关键事件。应在何处实现密钥处理取决于需要这些密钥的位置。如果您的整个程序应该在按键上起作用,则应在QMainWindow
中重载keyPressEvent()
。
当然,如果子小部件处于活动状态(如表单输入小部件),则它们会占用键处理。这可能意味着您还必须拦截这些事件
相关文章:
- 给定顺序中的事件处理
- C++事件系统 - 多态事件和事件处理程序
- wxWidgets 拖放文件事件处理程序初始化问题(无效static_cast)
- 更好的事件处理机制?
- 如何将IEnumerable与Process.Start的输出事件处理程序一起使用?
- "动态创建的事件处理程序"复选框
- Wxwidgets - 如何添加调整大小事件处理程序以使"X"绘图随窗口调整大小?
- Qt 键按事件处理程序仅在按下 ctrl、alt 或 shift 键时做出反应
- 类成员作为 C++ 中 C 样式事件的事件处理程序
- C 设计事件处理程序类
- 将托管事件处理程序传递给 Linux 中的非托管代码
- 如何在 c++ linux 中创建事件处理程序
- 解除 lambda 事件处理程序的绑定
- 这是MFC C 中单个选择的ComboBox的事件处理程序
- 审核的实时事件处理 C/C++
- 指纹读取器 - 从 C# 代码创建事件处理程序到C++的问题
- 为什么我的Windows控制台关闭事件处理程序超时
- 无法让 matplotlib 事件处理程序与 Boost.Python 一起工作
- 事件处理程序是Embarcadero C++Builder中的重入程序吗
- QTSCXML状态机中的事件处理