#include #include #include #include #include #include #include "./ui_mainwindow.h" namespace Ui { class MainWindow; } namespace{ bool isAltModifierActive() { return QGuiApplication::keyboardModifiers() & Qt::AltModifier; } bool isEventAltModifierActive(QKeyEvent* event) { return event->modifiers() & Qt::AltModifier; } class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) , ui(new Ui::MainWindow) , altPressed(false) { ui->setupUi(this); } ~MainWindow() { delete ui; } protected: void paintEvent(QPaintEvent* event) override { if (altPressed) { qDebug() << "MainWindow redrawn after Alt key press!"; qDebug() << " Alt modifier: " << isAltModifierActive(); } QMainWindow::paintEvent(event); }; void keyPressEvent(QKeyEvent* event) override { if (event->key() == Qt::Key_Alt) { qDebug() << "MainWindow - Alt key pressed!"; qDebug() << " Alt modifier: " << isAltModifierActive(); qDebug() << " event Alt modifier: " << isEventAltModifierActive(event); // this->repaint(); } QMainWindow::keyPressEvent(event); }; void keyReleaseEvent(QKeyEvent* event) override { if (event->key() == Qt::Key_Alt) { qDebug() << "MainWindow - Alt key released!"; qDebug() << " Alt modifier: " << isAltModifierActive(); qDebug() << " event Alt modifier: " << isEventAltModifierActive(event); // this->repaint(); } QMainWindow::keyReleaseEvent(event); }; private: Ui::MainWindow *ui; bool altPressed; }; } int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow mainWindow; auto* central = new QFrame; auto* layout = new QVBoxLayout(central); auto* open = new QPushButton("&Open"); layout->addWidget(open); auto* close = new QPushButton("&Close"); layout->addWidget(close); auto* help = new QPushButton("&Help"); layout->addWidget(help); mainWindow.setCentralWidget(central); mainWindow.show(); return a.exec(); } #include "main.moc"