16,818
社区成员




#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
ui->btn0->installEventFilter(this);
ui->btn1->installEventFilter(this);
ui->btn2->installEventFilter(this);
ui->btn3->installEventFilter(this);
ui->btn4->installEventFilter(this);
ui->btn5->installEventFilter(this);
}
Widget::~Widget()
{
delete ui;
}
bool Widget::eventFilter(QObject *watched, QEvent *event)
{
if(watched == ui->btn0 || watched == ui->btn1 || watched == ui->btn2
|| watched == ui->btn3 || watched == ui->btn4 || watched == ui->btn5){
if(event->type() == QEvent::KeyPress){
bool b0 = ui->btn0->hasFocus();
bool b1 = ui->btn1->hasFocus();
bool b2 = ui->btn2->hasFocus();
bool b3 = ui->btn3->hasFocus();
bool b4 = ui->btn4->hasFocus();
bool b5 = ui->btn5->hasFocus();
QKeyEvent *key_event = static_cast<QKeyEvent *>(event);
if(key_event->key() == Qt::Key_Right){
if(b0){
qWarning()<<"----btn0";
focusNextChild();
ui->btn1->setFocus();
}
if(b1){
qWarning()<<"----btn1";
focusNextChild();
ui->btn2->setFocus();
}
if(b2){
qWarning()<<"----btn2";
focusNextChild();
ui->btn3->setFocus();
}
if(b3){
qWarning()<<"----btn3";
focusNextChild();
ui->btn4->setFocus();
}
if(b4){
qWarning()<<"----btn4";
focusNextChild();
ui->btn5->setFocus();
}
if(b5){
qWarning()<<"----btn5";
focusNextChild();
ui->btn0->setFocus();
}
}
if (watched==ui->btn0){
if (event->type()==QEvent::FocusIn){
qWarning()<<"btn0 focus in";
}
else if (event->type()==QEvent::FocusOut){
qWarning()<<"btn0 focus out";
}
}
if (watched==ui->btn1){
if (event->type()==QEvent::FocusIn){
qWarning()<<"btn1 focus in";
}
else if (event->type()==QEvent::FocusOut){
qWarning()<<"btn1 focus out";
}
}
if (watched==ui->btn2){
if (event->type()==QEvent::FocusIn){
qWarning()<<"btn2 focus in";
}
else if (event->type()==QEvent::FocusOut){
qWarning()<<"btn2 focus out";
}
}
if (watched==ui->btn3){
if (event->type()==QEvent::FocusIn){
qWarning()<<"btn3 focus in";
}
else if (event->type()==QEvent::FocusOut){
qWarning()<<"btn3 focus out";
}
}
if (watched==ui->btn4){
if (event->type()==QEvent::FocusIn){
qWarning()<<"btn4 focus in";
}
else if (event->type()==QEvent::FocusOut){
qWarning()<<"btn4 focus out";
}
}
if (watched==ui->btn5){
if (event->type()==QEvent::FocusIn){
qWarning()<<"btn5 focus in";
}
else if (event->type()==QEvent::FocusOut){
qWarning()<<"btn5 focus out";
}
}
}
}
return QWidget::eventFilter(watched,event);
}