16,203
社区成员
发帖
与我相关
我的任务
分享
void test::ketPressEvent(QKeyEvent* event)
{
if(event->key() == Qt::Key_Up)
qDebug()<<"Up";
else if(event->key() == Qt::Key_Up)
qDebug()<<"Down";
else if(event->key() == Qt::Key_F1)
qDebug()<<"F1";
//.
//.
//.
QDialog::keyPressEvent(event);
}
childWidget->setFocusPolicy(Qt::NoFocus);
然后就可以在主窗体的按键事件中检测到光标键Qt::Key_Up,Qt::Key_Down了,但现在问题是我的程序里各式各样的子窗体很对,一大部分都不是我写的(公司其他部门人写的),现在有些子窗体需要响应光标,所以没办法全部设置为setFocusPolicy(Qt::NoFocus);
bool test::event(QEvent* e)
{
if (e->type() == QEvent::KeyPress)
{
QKeyEvent* kEvent = static_cast<QKeyEvent*>(e);
if (kEvent->key() == Qt::Key_Up) //这里枚举换成Qt::Key_Tab或者其他3个光标键,同样检测不到
{
qDebug() << "up"; //没有输出
}
}
return QDialog::event(e);
}
widgets->->setFocusPolicy(Qt::NoFocus);
然后其中有一组按钮,需要用光标键进行来回切换,应为机器是公司自己设计的,由于硬件方面的原因,这个功能只能切必须用光标键,所以需要在主窗体上实现这样的功能
if(event->key() == Qt::Key_Up)
doSomething();
else if(event->key() == Qt::Key_Down)
doAnotherThings();