Evgenii Legotckoi
6 ноября 2017 г. 17:05

QML - Урок 033. Подключение JavaScript файлов в других JavaScript файлах в Qt/QML проекте

В рамках проекта на QML имеется возможность не только подключать JavaScript  файлы в QML файлах, но и в других JavaScript файлах. При этом синтаксис подключения этих файлов будет аналогичен тому, что используется в QML файлах.

Например, вариант подключения JavaScript файла в QML файле

  1. import "first.js" as FirstJs

Тогда, как подключение JavaScript файла в другом JavaScript файле будет отличаться лишь наличием точки перед этой строкой

  1. .import "first.js" as FirstJs

Пример

Нам дан небольшой проект, в котором есть следующие файлы

  • main.qml
  • first.js
  • second.js

Задача следующая, подключить first.js в main.qml и вызвать функцию из этого JavaScript файла, в которой будет вызываться функция из second.js , который будет подключён в файле first.js .

main.qml

  1. import QtQuick 2.7
  2. import QtQuick.Controls 2.0
  3. import QtQuick.Layouts 1.3
  4.  
  5. import "first.js" as FirstJs // Подключение first.js
  6.  
  7. ApplicationWindow {
  8. visible: true
  9. width: 640
  10. height: 480
  11. title: qsTr("Hello World")
  12.  
  13. Button {
  14. anchors.centerIn: parent
  15. text: qsTr("Click Me")
  16.  
  17. // По клику кнопки вызовем функцию из first.js файла
  18. onClicked: FirstJs.func()
  19. }
  20. }

second.js

Данный файл имеет лишь функцию для вывода в консоль строки Second. Эту функцию нужно будет вызвать в first.js файле.

  1. .pragma library
  2.  
  3. function func() {
  4. console.log("Second")
  5. }

first.js

  1. .pragma library
  2. .import "second.js" as Second // Подключение second.js
  3.  
  4. function func() {
  5. console.log("First")
  6. Second.func() // Вызов функции из файла second.js
  7. }

Заключение

В результате при нажатии кнопки будет вызвана функция из файла first.js , которая выведет в консоль своё сообщение и вызовет функцию из файла second.js .

В консоль будет выведено следующее сообщение

  1. qml: First
  2. qml: Second

Вам это нравится? Поделитесь в социальных сетях!

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь