Modal Dialog with Qt Components on Meego

From Qt Wiki
Revision as of 11:14, 24 February 2015 by Maintenance script (talk | contribs)
Jump to navigation Jump to search


English Български

How to make a Modal Dialog with Qt Components on MeeGo

There is a "QML Dialog element":http://harmattan-dev.nokia.com/docs/library/html/qt-components/qt-components-meego-dialog.html?tab=1 in Qt Quick Components in MeeGo 1.2 Harmattan API. But this dialog is not modal - i.e. it can be closed by pressing on any part of the dialog's window, not only on the buttons. Such behavior is not good in some cases - any accidental touch can close the dialog's window. There is no way through the API to make this dialog not respond on background clicks.

Surely we can make such a window ourselves without using Dialog element, but it is not a quick or proper way.

From the Dialog's source it can be discovered that a background click generates a privateClicked signal. Let's disable it by adding 2 lines into Dialog's creation:

<br /> signal privateClicked<br /> onPrivateClicked: {}<br />


and we get truly modal dialog.

Full example of page with dialog

import QtQuick 1.1
import com.nokia.meego 1.0

Page {

QueryDialog {
id: quDialog
signal privateClicked
onPrivateClicked: {}
anchors.centerIn: parent
titleText: "Modal Dialog&quot;
rejectButtonText: "Cancel&quot;
onRejected: { console.log ("Rejected&quot;);}
}
Component.onCompleted: quDialog.open()
}