Connecting JavaScript files to other JavaScript files in a Qt / QML project

In the framework of the project on QML there is an opportunity not only to connect JavaScript files in QML files, but also in other JavaScript files. The syntax for connecting these files will be similar to that used in QML files.

For example, a variant of connecting a JavaScript file in a QML file

import "first.js" as FirstJs

Then, how to connect a JavaScript file to another JavaScript file will differ only by the presence of a dot before this line

.import "first.js" as FirstJs

Example

We are given a small project, in which there are the following files

  • main.qml

  • first.js

  • second.js

The next task is to connect first.js to main.qml and call a function from this JavaScript file, which will call the function from second.js , which will be connected in the file first.js .

main.qml

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
 
import "first.js" as FirstJs // Connecting first.js
 
ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
 
    Button {
        anchors.centerIn: parent
        text: qsTr("Click Me")
 
        // By clicking the button, we call the function from the first.js file
        onClicked: FirstJs.func()
    }
}

second.js

This file has only a function for outputting the Second line to the console. This function will need to be called in the first.js file

.pragma library
 
function func() {
    console.log("Second")
}

first.js

.pragma library
.import "second.js" as Second // Connecting second.js
 
function func() {
    console.log("First")
    Second.func() // Calling a function from file second.js
}

Conclusion

As a result, when the button is pressed, the function from the file first.js will be called, which will output its message to the console and call the function from file second.js .

The following message will be displayed in the console:

qml: First
qml: Second

Last updated