Do pustego okna QMainWindow
dodałem eventFilter i w konstruktorze dodałem installEventFilter(this);
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
bool eventFilter(QObject* obj, QEvent* event) override
{
if (event->type()==QEvent::KeyPress||event->type()==QEvent::KeyRelease)
{
qDebug()<<event;
}
return QObject::eventFilter(obj, event);
}
Naciskam przyciski LEWO,PRAWO,TAB
QKeyEvent(KeyPress, Key_Left)
QKeyEvent(KeyRelease, Key_Left)
QKeyEvent(KeyPress, Key_Right)
QKeyEvent(KeyRelease, Key_Right)
QKeyEvent(KeyPress, Key_Tab, text="\t")
QKeyEvent(KeyRelease, Key_Tab, text="\t")
dla mnie jest OK i nie mam uwag
Dodaje przyciski QButton i ponownie naciskam LEWO,PRAWO,TAB
QKeyEvent(KeyRelease, Key_Left)
QKeyEvent(KeyRelease, Key_Right)
QKeyEvent(KeyPress, Key_Tab, text="\t")
QKeyEvent(KeyRelease, Key_Tab, text="\t")
Do funkcji eventFilter nie trafiły zdarzenia KeyPress dla przycisków LEWO i PRAWO
TAB działa po staremu bo nie ma innych przycisków
Dodaje kolejny przyciski QButton i ponownie naciskam LEWO,PRAWO,TAB
QKeyEvent(KeyRelease, Key_Left)
QKeyEvent(KeyRelease, Key_Right)
QKeyEvent(KeyRelease, Key_Tab, text="\t")
LEWO,PRAWO,TAB powoduje zmianę elementu który dostaje fokus , czyli jest to funkcja Qt i większości przypadków ma to sens, tylko że ja chciałbym to czasami nadpisać.
Gdzie umieścić moja funkcję aby przejąc kontrolę nad klawiaturą , chciałbym we własny sposób oprogramować klawiaturę
(ze względu że to sprzęt embedded i mam dziwne wymagania)
Chyba brakuje mi KeyPreview
z Delphi :D