R
Feb. 7, 2017, 2:06 a.m.

Управление QML объектами в JavaScript

JavaScript, QML

У меня есть JS файл, в котором я отправляю запросы, как мне в этой же функции управлять QML компонентами в main.qml или другом QML файле.

.pragma library
function login(username, password) {        
        var params = 'username=' + encodeURIComponent(username) +
        '&password=' + encodeURIComponent(password);
        var request = new XMLHttpRequest()
        request.open('POST', 'http://auth-test.app-labs.ru/api/login')
        request.onreadystatechange = function() {
            if (request.readyState === XMLHttpRequest.DONE) {
                console.log("Status", request.status)
                if (request.status && request.status === 200) {
                    console.log("response", request.responseText)                    
                } else {
                    console.log("HTTP:", request.status, request.statusText)
                }
            }
        }
        request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
        request.send(params)    
}

JSQML.png
2

Do you like it? Share on social networks!

3
Evgenii Legotckoi
  • Feb. 7, 2017, 10:05 a.m.
  • The answer was marked as a solution.

На самом деле ничего сложного здесь нет. Нужно просто подключить данный js файл в файл qml, например так:

import "logic.js" as Logic

И передавать объект QML в функцию по его id, например так:

Rectangle 
{
    id: grid

    Timer {
        onTriggered: {
                Logic.createTarget(grid)
        }
    }
}

Сама функция createTarget может выглядеть следующим образом:

function createTarget(parent)
{
    var target = targetComponent.createObject(parent)
}

Более подробно Вы можете почитать в статье по динамическому созданию объектов QML .

    R
    • Feb. 7, 2017, 2:13 p.m.

    То есть если я хочу написать в textedit поле main.qml, я просто передаю это поле в свою функцию?

      Evgenii Legotckoi
      • Feb. 7, 2017, 5:26 p.m.

      Ну да. id этого TextEdit передаёте и там доступ к его property можно без проблем получать. Посмотрите в том уроке внимательно на gameArea, как там доступ к rows и columns в javascript части осуществляется.

        Comments

        Only authorized users can post comments.
        Please, Log in or Sign up
        • Last comments
        • AK
          April 1, 2025, 11:41 a.m.
          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
        • Evgenii Legotckoi
          March 9, 2025, 9:02 p.m.
          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
        • VP
          March 9, 2025, 4:14 p.m.
          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
        • ИМ
          Nov. 22, 2024, 9:51 p.m.
          Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
        • Evgenii Legotckoi
          Oct. 31, 2024, 11:37 p.m.
          Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup