QMainWindow :: keyReleaseEvent не работает должным образом

Вот мой код:

.ч файл

class MyMainWindow : public QMainWindow
{
...
protected:
virtual void keyPressEvent(QKeyEvent *event);
virtual void keyReleaseEvent(QKeyEvent *event);
private:
bool _altKeyDown;
...
}

файл .cpp

void MyMainWindow::keyPressEvent(QKeyEvent *event) {
if(event->key() == Qt::Key_Alt) {
_altKeyDown = true;
}
}

void MyMainWindow::keyReleaseEvent(QKeyEvent *event) {
if(getenv("DEBUG_MODE")) qDebug() << "keyReleaseEvent fired";
if(event->key() == Qt::Key_Alt) {
_altKeyDown = false;
}
}

keyPressEvent функция вызывается каждый раз, когда я нажимаю клавишу, но когда я отпускаю клавишу, keyReleaseEvent не называется. Я что-то пропустил?

0

Решение

Я думаю, что вы должны сначала включить событие мыши, добавить setMouseTracking(true); в вашей функции построения, вот так:

MyMainWindow::MyMainWindow(QWidget *parent) : QMainWindow(parent)
{
setMouseTracking(true);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]