crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> [РЕШЕНО] Ждать события диалогового окна 1 внутри обработчика onClicked диалогового окна 2
Rocky
  опции профиля:
сообщение 18.2.2011, 10:45
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


У кого-нить есть идеи по-поводу того, как это сделать? Т.е. есть диалоговое_окно_1 (например, messageBox). Есть диалоговое_окно_2. У последнего есть кнопка "удалить". Соответственно при нажатии хочу вывести messageBox, чтобы пользователь подтвердил удаление. Соответственно в onClicked кнопки диалогового_окна_2 нужно как-то "заморозить" выполненение дальнейшего кода пока не будет нажата какая-то кнопка messageBox ("да", "нет")...

Сама модальность messageBox реализуется таким образом: беру просто рект, ставлю ему MouseArea {anchors.fill: parent} и выводу на экран. Таким образом пользователь не может ничего нажать, кроме кнопок этого messageBox. Но в слоте onClicked где я его (этот messageBox) показываю, продолжает выполняться код после этого показа messageBox.... Повесить внутрь onClicked еще один "messageBoxID::onClicked" не получается.

Как можно решить проблему?

Спасибо)

Т.е. вот так нельзя сделать:
SimpleButton {
        ....
        onClicked: {
            dialogHider.state = "show"
            msgQuestion.state = "show"
            msgQuestion.onPushedYes: console.log(productListView.getCurrentItemText())

onPushedYes должен быть обработан при инстанциировании messageBoxID (внутри объявления msgQuestion)...


Через properties тоже ниче не получается... Нужно как-то затормозить дальнейшие действия в SimpleButton::onClicked после строки
msgQuestion.state = "show"


Сообщение отредактировал Rocky - 24.2.2011, 15:46
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.2.2011, 13:43
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Rocky @ 18.2.2011, 12:45) *
Соответственно при нажатии хочу вывести messageBox, чтобы пользователь подтвердил удаление. Соответственно в onClicked кнопки диалогового_окна_2 нужно как-то "заморозить" выполненение дальнейшего кода пока не будет нажата какая-то кнопка messageBox ("да", "нет")...
а разве по умолчанию поведение не такое?

П.С.
С Qml толком не работал, но во всех прочих GUI библиотеках такое поведение и будет по умолчанию. Иначеб не было смысла в messageBox-ах
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 18.2.2011, 15:03
Сообщение #3


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Цитата(Litkevich Yuriy @ 18.2.2011, 13:43) *
а разве по умолчанию поведение не такое?

Неа... Тут вообще все оч хитро. Нет такого понятия как модальный/немодальный... Вообще нет понятия что вот это кнопка. А вот это переключатель...

Модальность достигается отдельным заданием области реагирования мыши и заданием для нее якорей (anchors). Короче вот политика Нокии. Во ребята, qml - единственное средство разработки юая. Только вот чтобы написать что-то толковое, это писец. Те же компоненты, которые есть - малотого что сырые, так они еще и не доконца одобрены. Т.е. юзать их можно на свой страх и риск. Либо все делать самому. Ну есть понятия список/модель/делегат и пр... Но все равно как-то сыровато все. Т.е. кнопку сделать довольно легко.. А вот comboBox - уже придется попотеть.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 24.2.2011, 15:49
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Решение (несколько идиотское, но в принципе масштабируемое и работающее):
//file MessageBoxQuestion
Rectangle {
        signal pushedYes
        signal pushedNo
.......
}

//file my dialog
Rectangle {
    id: listDialog

SimpleButton {
        id: buttonDelList
    .......
        
        onClicked: {
.....
            msgQuestion.callingPlace = "buttonDelList"
.....
        }
    }

MessageBoxQuestion {
......
        property string callingPlace: ""

        onPushedYes: {
            if (msgQuestion.callingPlace == "buttonDelList")
            {
                ....
            }
            else if ....
            {
                .....
            }
        }
    }


Сообщение отредактировал Rocky - 24.2.2011, 15:50
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.4.2024, 19:14