Объекты JS

Добавлено 14 июля 2022 в 06:37

При работе с JS некоторые объекты и методы используются чаще. Ниже описаны некоторые из них.

  • Math.floor(v), Math.ceil(v), Math.round(v) – округление числа с плавающей запятой в меньшую сторону, в большую сторону и к ближайшему значению;
  • Math.random() – создать случайное число от 0 до 1;
  • Object.keys(o) – получить ключи от объекта (включая QObject);
  • JSON.parse(s), JSON.stringify(o) – преобразования между объектом JS и строкой JSON;
  • Number.toFixed(p) – число с плавающей запятой с фиксированной точностью;
  • Date – работа с датой.

Вы также можете найти их по ссылке: Справочник по JavaScript.

Вот несколько небольших примеров того, как использовать JS с QML. Они должны дать вам представление о том, как вы можете использовать JS внутри QML.

Печать всех ключей из элемента QML Item

Item {
    id: root
    Component.onCompleted: {
        var keys = Object.keys(root);
        for(var i=0; i<keys.length; i++) {
            var key = keys[i];
            // печатает все свойства, сигналы, функции из объекта
            console.log(key + ' : ' + root[key]);
        }
    }
}

Парсинг объекта в строку JSON и обратно

Item {
    property var obj: {
        key: 'value'
    }

    Component.onCompleted: {
        var data = JSON.stringify(obj);
        console.log(data);
        var obj = JSON.parse(data);
        console.log(obj.key); // > 'value'
    }
}

Текущая дата

Item {
    Timer {
        id: timeUpdater
        interval: 100
        running: true
        repeat: true
        onTriggered: {
            var d = new Date();
            console.log(d.getSeconds());
        }
    }
}

Вызов функции по имени

Item {
    id: root

    function doIt() {
        console.log("doIt()")
    }

    Component.onCompleted: {
        // Вызов с использованием выполнения функции
        root["doIt"]();
        var fn = root["doIt"];
        // Вызов с использованием метода вызова JS
        // (можно передать в пользовательском объекте и аргументах)
        fn.call()
    }
}

Теги

GUI / Графический интерфейс пользователяJavaScriptQMLQtQtQuickПрограммирование

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.