Sine Striker
2024-02-20 2d2fc799bc698ebf7e7c8bcc394366d0d7bf071b
examples/mainwindow/mainwindow.cpp
@@ -1,3 +1,7 @@
// Copyright (C) 2023-2024 Stdware Collections (https://www.github.com/stdware)
// Copyright (C) 2021-2023 wangwenx190 (Yuhang Zhao)
// SPDX-License-Identifier: Apache-2.0
#include "mainwindow.h"
#include <QtCore/QDebug>
@@ -5,6 +9,7 @@
#include <QtCore/QTime>
#include <QtCore/QTimer>
#include <QtGui/QPainter>
#include <QtGui/QWindow>
#include <QtWidgets/QApplication>
#include <QtWidgets/QStyle>
#include <QtWidgets/QPushButton>
@@ -46,6 +51,8 @@
    setWindowTitle(tr("Example MainWindow"));
    resize(800, 600);
    windowAgent->centralize();
}
static inline void emulateLeaveEvent(QWidget *widget) {
@@ -106,6 +113,14 @@
            break;
    }
    return QMainWindow::event(event);
}
void MainWindow::closeEvent(QCloseEvent *event) {
    if (!(qApp->keyboardModifiers() & Qt::ControlModifier)) {
        QTimer::singleShot(1000, this, &QWidget::show);
    }
    event->accept();
}
void MainWindow::installWindowAgent() {
@@ -289,6 +304,13 @@
#endif
    windowAgent->setHitTestVisible(menuBar, true);
#ifdef Q_OS_MAC
    windowAgent->setSystemButtonAreaCallback([](const QSize &size) {
        static constexpr const int width = 75;
        return QRect(QPoint(size.width() - width, 0), QSize(width, size.height())); //
    });
#endif
    setMenuWidget(windowBar);
    // 3. Adds simulated mouse events to the title bar buttons