--- /dev/null
+#include "qmlappviewer.h"
+#include <QDebug>
+#include <QEvent>
+#include <QCloseEvent>
+
+QmlAppViewer::QmlAppViewer(QWidget *parent) :QDeclarativeView(parent),
+ m_closePressed(false)
+{
+}
+
+void QmlAppViewer::closeEvent(QCloseEvent *event)
+{
+ qDebug() << Q_FUNC_INFO << event->spontaneous();
+ if (event->spontaneous() && m_closePressed) {
+ event->setAccepted(false);
+ m_closePressed = false;
+ return;
+ }
+ QDeclarativeView::closeEvent(event);
+}
+
+void QmlAppViewer::keyPressEvent(QKeyEvent *event)
+{
+ qDebug() << Q_FUNC_INFO << event->key();
+ if (event->key() == Qt::Key_Close) {
+ m_closePressed = true;
+ qDebug() << "Qt::Key_Close";
+ }
+ QDeclarativeView::keyPressEvent(event);
+}
+void QmlAppViewer::keyReleaseEvent(QKeyEvent *event)
+{
+ qDebug() << Q_FUNC_INFO << event->key();
+ if (event->key() == Qt::Key_Close) {
+ m_closePressed = true;
+ qDebug() << "Qt::Key_Close";
+ }
+ if (event->key() == Qt::Key_MediaPrevious ) {
+ emit backKey();
+ qDebug() << "Qt::Key_MediaPrevious";
+ }
+ QDeclarativeView::keyReleaseEvent(event);
+}
--- /dev/null
+#ifndef QMLAPPVIEWER_H
+#define QMLAPPVIEWER_H
+
+#include <QDeclarativeView>
+
+class QmlAppViewer : public QDeclarativeView
+{
+ Q_OBJECT
+ public:
+ explicit QmlAppViewer(QWidget *parent = 0);
+ signals:
+ void backKey();
+
+ protected:
+ void closeEvent(QCloseEvent *);
+ void keyPressEvent(QKeyEvent *);
+ void keyReleaseEvent(QKeyEvent *event);
+
+ private:
+ bool m_closePressed;
+};
+
+#endif // QMLAPPVIEWER_H