blob: 347b47403e4edf59cc45a87394d039630dbe568a (
plain)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | // Copyright (C) 2016 The Qt Company Ltd.// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause#include <QApplication>#include <QMessageBox>#include <QSessionManager>#include <QWidget>namespace src_gui_kernel_qguiapplication {struct MyMainWidget :public QWidget {MyMainWidget(QWidget *parent);voidcommitData(QSessionManager& manager);boolsaveDocument() {return true; }; QStringList restartCommand() {returnQStringList(); }; QStringList discardCommand() {returnQStringList(); };}; MyMainWidget *mainWindow =nullptr;voiddo_something(QString command) {Q_UNUSED(command); }; MyMainWidget mySession(nullptr);//! [0]intmain(int argc,char*argv[]){QApplication::setDesktopSettingsAware(false); QApplication app(argc, argv);// ...return app.exec();}//! [0]//! [1]MyMainWidget::MyMainWidget(QWidget *parent):QWidget(parent){connect(qApp, &QGuiApplication::commitDataRequest,this, &MyMainWidget::commitData);}voidMyMainWidget::commitData(QSessionManager& manager){if(manager.allowsInteraction()) {int ret =QMessageBox::warning( mainWindow,tr("My Application"),tr("Save changes to document?"),QMessageBox::Save |QMessageBox::Discard |QMessageBox::Cancel);switch(ret) {caseQMessageBox::Save: manager.release();if(!saveDocument()) manager.cancel();break;caseQMessageBox::Discard:break;caseQMessageBox::Cancel:default: manager.cancel();}}else{// we did not get permission to interact, then// do something reasonable instead}}//! [1]/* wrap snippet 2//! [2]appname -session id//! [2]*/// wrap snippet 2}// src_gui_kernel_qguiapplication
|