Na komputerze embedded mam tylko 6 przycisków: 4x strzałki , Ok, Esc i aplikacja Qt
Trzy pola do wprowadzenia wartości liczbowej
Key_Up/Key_Down zmieniają wartość
Jak ustawić "fokus" klawiszami Key_Left/Key_Right ? w filozofii Qt
#pragma once
#include <QWidget>
#include <QDebug>
#include <QKeyEvent>
#include <QLineEdit>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr)
{
lineEdit1 = new QLineEdit(this);
lineEdit1->move(0,0);
lineEdit2 = new QLineEdit(this);
lineEdit2->move(45,45);
lineEdit3 = new QLineEdit(this);
lineEdit3->move(90,90);
// installEventFilter(this);
}
virtual ~Widget(){};
protected:
void keyPressEvent(QKeyEvent *event) override
{
qDebug()<< "Widget::keyPressEvent" << event;
auto *focused_widget = qobject_cast<QLineEdit*>(QWidget::focusWidget());
if(focused_widget)
{
int num = focused_widget->text().toInt();
if(event->key()==Qt::Key_Up) num++;
if(event->key()==Qt::Key_Down) num--;
if(event->key()==Qt::Key_F2) this->focusPreviousChild();
if(event->key()==Qt::Key_F3) this->focusNextChild();
focused_widget->setText(QString::number(num));
}
QWidget::keyPressEvent(event);
};
bool eventFilter(QObject *obj, QEvent *evt) override{
qDebug()<< "Widget::eventFilter " << evt;
return QWidget::eventFilter(obj, evt);
};
private:
QLineEdit *lineEdit1{nullptr};
QLineEdit *lineEdit2{nullptr};
QLineEdit *lineEdit3{nullptr};
};
keyPressEvent nie przechwytuje klawiszy Key_Left/Key_Right
Jakie sa opcję ?
installEventFilter(this)