我想這樣做: 顯示某種形式,處理Rectangle :: onClicked事件(禁用表單,將不透明度設置爲0.2,處理一些JavaScript以提交表單,然後將不透明度設置回1.0,啓用形成)。 但我不知道該怎麼做。在QML中提交表單
似乎onClicked()在「批處理」模式下處理,更改任何ui屬性都不可見,直到函數退出。我玩過狀態,過渡和動畫,但仍然沒有成功。
感謝您的任何建議, 米哈爾
我想這樣做: 顯示某種形式,處理Rectangle :: onClicked事件(禁用表單,將不透明度設置爲0.2,處理一些JavaScript以提交表單,然後將不透明度設置回1.0,啓用形成)。 但我不知道該怎麼做。在QML中提交表單
似乎onClicked()在「批處理」模式下處理,更改任何ui屬性都不可見,直到函數退出。我玩過狀態,過渡和動畫,但仍然沒有成功。
感謝您的任何建議, 米哈爾
也許你在談論使用XMLHttpRequest
異步。在發送請求時「禁用」表格,當onreadystatechange
用readyState === XMLHttpRequest.DONE
調用時「啓用」。
應該可以用狀態來解決。您可以嘗試在WorkerScript中執行Javascript處理。處理完成後,它將發送回覆到QML WorkerScript元素,該元素將表單的狀態設置爲再次啓用。因此,在onClicked中,通過設置狀態來執行禁用動畫,並且在WorkerScript元素的onMessage函數中,通過將狀態設置爲「啓用」來執行啓用動畫。
這個解決方案看起來很好,除了腳本函數無法訪問上下文。有什麼辦法,如何將任何對象傳遞給函數?有一個「網絡」變量是python對象(通過上下文屬性)。我試圖通過這種方式:saveScript.sendMessage({'網絡':網絡}),但它不適合我。當我在函數內調用message.network.save()時,我得到異常:TypeError:表達式的結果'message.network'[null]不是一個對象。 – Miso 2012-08-07 09:06:22
根據限制部分,我無法使用它,因爲我需要通過QDeclarativeContex訪問「在QML對象上設置的上下文屬性」 – Miso 2012-08-07 09:15:58
在此處討論了類似的內容:http://www.developer.nokia.com/Community/Discussion /showthread.php?228097-How-is-the-context-of-WorkerScript-defined – Miso 2012-08-07 09:21:28
您可以簡單地啓動兩個自定義動畫,一個隱藏表單和一個顯示。事情是這樣的:
SequentialAnimation {
id: submitAndHideForm
ParallelAnimation {
// Animations to hide the form elements
}
ScriptAction {
script: submitForm()
}
}
ParallelAnimation {
id: showForm
// Animations to show the form elements
}
然後你可以只當你想提交表單開始第一個與submitAndHideForm.start()
,當你得到迴應就可以啓動第二個。
不,我的問題集中在更改QML中的UI元素(啓用/禁用)。在我的代碼中,「提交」是通過調用python函數完成的(通過上下文屬性) – Miso 2012-08-07 07:21:53