#include #include #include #include #include #include #include static QString statesToString(Qt::WindowStates ws) { const auto to_string = [] (Qt::WindowState ws) -> QString { switch (ws) { case Qt::WindowMinimized: return QLatin1String("Qt::WindowMinimized"); case Qt::WindowMaximized: return QLatin1String("Qt::WindowMaximized"); case Qt::WindowFullScreen: return QLatin1String("Qt::WindowFullScreen"); case Qt::WindowActive: return QLatin1String("Qt::WindowActive"); default: return QString(); } }; QStringList result; for (const auto flag : { Qt::WindowMinimized, Qt::WindowMaximized, Qt::WindowFullScreen, Qt::WindowActive }) { if (ws & flag) result << to_string(flag); } return result.join(QLatin1Char('|')); } class Window : public QWidget { public: Window() { setWindowTitle(QLatin1String("MyWidget test widget")); const auto label = new QLabel(this); const auto toggle_fullscreen_button = new QPushButton(QLatin1String("Toggle fullscreen"), this); const auto close_button = new QPushButton(QLatin1String("Close window"), this); const auto layout = new QVBoxLayout(this); layout->addWidget(label); layout->addWidget(toggle_fullscreen_button); layout->addWidget(close_button); setLayout(layout); const auto timer = new QTimer(this); timer->setInterval(100); timer->start(); connect(timer, &QTimer::timeout, this, [this, label] { label->setText(QLatin1String("Window state: ") + statesToString(windowState())); }); connect(toggle_fullscreen_button, &QPushButton::clicked, this, [this] { setWindowState(windowState() ^ Qt::WindowFullScreen); }); connect(close_button, &QPushButton::clicked, this, &QWidget::close); } bool event(QEvent *e) override { if (e->type() == QEvent::WinIdChange) { if (const auto win_handle = windowHandle()) QWindowsWindowFunctions::setHasBorderInFullScreen(win_handle, true); } return QWidget::event(e); } }; int main(int argc, char **argv) { QApplication app(argc, argv); Window w; w.setWindowState(Qt::WindowFullScreen); w.showMinimized(); return app.exec(); }