English Български
How to make a Modal Dialog with Qt Components on MeeGo
There is a QML Dialog element [harmattan-dev.nokia.com] 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:
- signal privateClicked
- onPrivateClicked: {}
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"
- rejectButtonText: "Cancel"
- onRejected: { console.log ("Rejected");}
- }
- Component.onCompleted: quDialog.open()
- }

