×
Namespaces

Variants
Actions
Revision as of 04:16, 11 October 2012 by hamishwillee (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Closing a Qt Quick application from QML

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata
Tested with
Devices(s): Nokia 900
Compatibility
Platform(s): S60 5th Edition
Maemo
Symbian
Article
Keywords: QML, QDeclarativeView
Created: kratsan (17 Jun 2010)
Last edited: hamishwillee (11 Oct 2012)

Contents

Overview

This snippet shows how to trigger the closing of a Qt Quick application from QML code. This is needed especially in full screen applications, because there may not be any dedicated hardware key to close the application.

The following QML code calls the global Qt.quit() function which will trigger the ending of the application. In this example, we have used QDeclarativeView to show the Qt Quick UI and thus we must connect the QDeclarativeEngine::quit() signal to the QApplication::quit() slot.

NOTE: Had we used qmlviewer to interpret the QML, the Qt.quit() signal would have been automatically handled.

Preconditions

  • Qt 4.7 or higher is installed on your platform.

Qt Project File

#To make sure we use declarative
QT += declarative
 
#To get files deployed on device / emulator
files.sources += ui.qml
DEPLOYMENT += files

Source

main.cpp

#include <QApplication>
#include <QDeclarativeView>
#include <QDeclarativeEngine>
 
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
 
QDeclarativeView view;
view.setSource(QUrl("./ui.qml"));
view.setResizeMode(QDeclarativeView::SizeRootObjectToView);
 
QObject::connect((QObject*)view.engine(), SIGNAL(quit()), &app, SLOT(quit()));
 
#if defined(Q_WS_S60) || defined(Q_WS_MAEMO)
view.showMaximized();
#else
view.setGeometry(100,100, 800, 480);
view.show();
#endif
 
return app.exec();
}

ui.qml

import Qt 4.7
 
Rectangle {
anchors.fill: parent; color: "black"
 
Rectangle {
anchors.centerIn: parent
width: 100; height: 40; radius: 5; color: "lightgray"
 
Text { anchors.centerIn: parent; text: "Quit"; color: "black" }
 
MouseArea {
anchors.fill: parent
onClicked: Qt.quit()
}
}
}

Postconditions

The calling of the Qt.quit() function in QML code caused the emission of the QDeclarativeEngine::quit() signal, and because this signal was connected to the QApplication::quit() slot, the application was closed.

This page was last modified on 11 October 2012, at 04:16.
397 page views in the last 30 days.