Modal Dialog with Qt Components on Meego: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
(Remove inaccurate statement about Maemo/MeeGo successor. See Talk:Support for Maemo)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:snippets]]<br />[[Category:HowTo]]
{{Outdated|reason=The MeeGo/Harmattan platform is no longer supported.}}
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
 
[[Category:snippets]]
[[Category:HowTo]]


'''English''' [[Modal_Dialog_with_Qt_Components_on_Meego_Bulgarian|Български]]
'''English''' [[Modal_Dialog_with_Qt_Components_on_Meego_Bulgarian|Български]]
Line 5: Line 9:
= How to make a Modal Dialog with Qt Components on MeeGo =
= How to make a Modal Dialog with Qt Components on MeeGo =


There is a &quot;QML Dialog element&amp;quot;: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.
There is a [http://harmattan-dev.nokia.com/docs/library/html/qt-components/qt-components-meego-dialog.html?tab=1 QML Dialog element] 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.
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 /><code><br /> signal privateClicked<br /> onPrivateClicked: {}<br /></code><br />and we get truly modal dialog.
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:
<code>
signal privateClicked
onPrivateClicked: {}
</code>
and we get truly modal dialog.


'''Full example of page with dialog'''<br /><code><br />import QtQuick 1.1<br />import com.nokia.meego 1.0
'''Full example of page with dialog'''
<code>
import QtQuick 1.1
import com.nokia.meego 1.0


Page {
Page {


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

Latest revision as of 15:06, 27 April 2015

IMPORTANT: The content of this page is outdated. Reason: The MeeGo/Harmattan platform is no longer supported.
If you have checked or updated this page and found the content to be suitable, please remove this notice.
This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

English Български

How to make a Modal Dialog with Qt Components on MeeGo

There is a QML Dialog element 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()

}