Български English

Как да направим модален диалог с Qt Components на MeeGo

Диалоговият прозорец [harmattan-dev.nokia.com] в Qt Quick Components за MeeGo 1.2 Harmattan не поддържа модалност, т.е. той може да бъде затворен като се натисне където и да е по екрана. Това поведение не е добро в някои случаи – всяко случайно докосване на екрана може да затвори диалоговият прозорец. За съжаление няма начин това да се забрани през API-то.

Естествено можем да си направим такъв диалогов прозорец сами, но това няма да стане бързо и няма да е много правилно.

От изходният код на Dialog, може да се види, че натискането на неактивните части от прозореца, генерира сигнала privateClicked. Нека да го спрем като добавим тези два реда код при създаването на диалогов прозорец:

  1.     signal privateClicked
  2.     onPrivateClicked: {}

Сега вече имаме истински модален прозорец.

Цялостен пример за страница с диалог

  1. import QtQuick 1.1
  2. import com.nokia.meego 1.0
  3.  
  4. Page {
  5.  
  6. QueryDialog {
  7.     id: quDialog
  8.     signal privateClicked
  9.     onPrivateClicked: {}
  10.     anchors.centerIn: parent
  11.     titleText: "Modal Dialog"
  12.     rejectButtonText: "Cancel"
  13.     onRejected: { console.log ("Rejected");}
  14.   }
  15.   Component.onCompleted: quDialog.open()
  16. }

Categories: