目前我想处理基本的密钥处理;例如如果按下了键,请执行此操作。但是,它应该有自己的类还是在单个函数中完成? Qt有记录关键事件的方法,但我不知道如何继续。我可以:
void keyPrHandle(QKeyEvent *Ev)
{
if (Ev->key() == Qt::Key_G)
ui->label->setText(Ev->text());
}
否则,我必须构建一个处理关键事件的类。我不知道Qt如何处理关键事件,也不知道我应该如何实现它。
答案 0 :(得分:1)
您可以在派生类中执行此操作。假设你有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
答案 1 :(得分:1)
每个QWidget
处理关键事件。你应该在哪里实现密钥处理取决于你需要它们的位置。如果您的整个程序应该按键操作,则应该在QMainWindow
中重载keyPressEvent()
。
当然,如果子窗口小部件处于活动状态(如表单输入窗口小部件),则会占用密钥处理。这可能意味着你必须拦截这些事件