Я пытаюсь создать объект кнопки qml, который отображает экран во время выполнения функции. Я планирую использовать этот экран загрузки, когда мне нужно проанализировать больший набор данных / запустить более медленную функцию. В настоящее время это то, что я придумал.
//LoadingButton.qml
import QtQuick 2.4
import QtQuick.Controls 1.2
Item
{
id: impl
function callbackFunction() { console.log("This is a dummy funciton and needs to be overwritten in the implementation") } //empty dummy function
property alias style: button.style
Button {
id: button
anchors.fill: parent
onClicked: {
loadingScreen.visible = true;
console.log("Loading should be visible")
impl.callbackFunction();
loadingScreen.visible = false;
console.log("Loading should be hidden")
}
}
Rectangle
{
width: 500
height: 500
x:0
y:0
z: 60
id: loadingScreen
color: "red"
visible: false
}
}
В этом примере корректно запускается callbackFunction после перезаписи в родительском объекте, но видимость Rectangle не изменяется до тех пор, пока не будет завершена более медленная функция. Кроме того, приложение останавливается до завершения.
Есть ли способ заставить прямоугольник показать / скрыть выполнение функции в середине - javascript?