Вот мой код:
.ч файл
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
не называется. Я что-то пропустил?
Я думаю, что вы должны сначала включить событие мыши, добавить setMouseTracking(true);
в вашей функции построения, вот так:
MyMainWindow::MyMainWindow(QWidget *parent) : QMainWindow(parent)
{
setMouseTracking(true);
}
Других решений пока нет …