Identified modules are modules that are installed and identifiable to the QML engine by a URI in the form of a dotted identifier string, which should be specified by the module in its qmldir file. This enables such modules to be imported with a unique identifier that remains the same no matter where the module is located on the local file system. When importing an identified module, an unquoted identifier is used, with a mandatory version number:.
For example, the qmldir file of the module com. It is possible to store different versions of a module in subdirectories of its own. For example, a version 2. The engine will automatically load the module which matches best. Alternatively, versioning for different types can be defined within a qmldir file itself, however this can make updating such a module more difficult as a qmldir file merge must take place as part of the update procedure.
Consider the following QML project directory structure. Under the top level directory myappthere are a set of common UI components in a sub-directory named mycomponentsand the main application code in a sub-directory named mainlike this:. To make the mycomponents directory available as an identified module, the directory must include a qmldir file that defines the module identifier, and describes the object types made available by the module.
Additionally, the location of the qmldir file in the import path must match the module's dotted identifier string. In this case:. Once this is done, a QML file located anywhere on the local filesystem can import the module by referring to its URI and the appropriate version:.
Identified modules are also accessible as a network resource. This ensures that clients which use the module can be certain that the object types defined in the module will behave as the module author documented.
Clients will then be able to import the above module with the following import statement assuming that the module registers types into version 1. Documentation contributions included herein are the copyrights of their respective owners. Qt and respective logos are trademarks of The Qt Company Ltd. All other trademarks are property of their respective owners. Identified Modules Identified modules are modules that are installed and identifiable to the QML engine by a URI in the form of a dotted identifier string, which should be specified by the module in its qmldir file.
When importing an identified module, an unquoted identifier is used, with a mandatory version number: import QtQuick 2. CustomUi 1.Hi Tom. Thanks for sharing the plugin with the community. I admit I had troubles with actually using it, although the problems were not related directly to the code.
Please see the issue 2 in your tracker for the details. Regarding the coding itself, I think that the reported bug 1 in your tracker will have to be fixed prior to approving the plugin here. I am going to mark this plugin as needs more work now. Thanks for your patience with the review and approval process. Thanks for providing an updated version.
I am happy to approve this plugin now. You are cleared to land, welcome to the Plugins directory! Skip to main content. You are currently using guest access Log in. Useful links Source control URL. Bug tracker. Tom McCracken Lead maintainer. View other contributions. Show comments. Tomasz Muras.
Moodle plugins directory: Questionmark QML Importer (Alpha)
Hi Tom, Thank you for your contribution. Which version of QML does your importer support? Tom McCracken. Hi Yes that is the correct place. All of the sample files I was given to work with are all version 3, so it is built around that version. Plugins bot. Richard van Iwaarden. Hi all! Is this plugin still working or maintained?
We are at Moodle 3.A local directory of QML files can be imported without any additional setup or configuration. A remote directory of QML files can also be imported, but requires a directory listing qmldir file to exist.
Subscribe to RSS
If the local directory contains a directory listing qmldir file, the types will be made available with the type names specified in the qmldir file; otherwise, they will be made available with type names derived from the filenames of the QML documents. Only filenames beginning with an uppercase letter and ending with ". Consider the following QML project directory structure. Under the top level directory myappthere are a set of common UI components in a sub-directory named mycomponentsand the main application code in a sub-directory named mainlike this:.
The directory may be imported into a qualified local namespace, in which case uses of any types provided in the directory must be qualified:. The ability to import a local directory is convenient for cases such as in-application component sets and application prototyping, although any code that imports such modules must update their relevant import statements if the module directory moves to another location.
Warning: When importing directories from a remote server, developers should always be careful to only load directories from trusted sources to avoid loading malicious code. A directory listing qmldir file distinctly different from a module definition qmldir file. A directory listing qmldir file allows a group of QML documents to be quickly and easily shared, but it does not define a type namespace into which the QML object types defined by the documents are registered, nor does it support versioning of those QML object types.
In contrast to purely imperative code, where changes in attributes and behavior are expressed through a series of statements that are processed step by step, QML's declarative syntax integrates attribute and behavioral changes directly into the definitions of individual objects.
Each object may also declare child objects using nested object declarations. An object declaration consists of the name of its object type, followed by a set of curly braces.
All attributes and child objects are then declared within these braces. This declares an object of type Rectanglefollowed by a set of curly braces that encompasses the attributes defined for that object.C++ Qt 47 - Intro to model view programming
The Rectangle type is a type made available by the QtQuick module, and the attributes defined in this case are the values of the rectangle's widthheight and color properties. These are properties made available by the Rectangle type, as described in the Rectangle documentation. The above object can be loaded by the engine if it is part of a QML document. That is, if the source code is complemented with import statement that imports the QtQuick module to make the Rectangle type availableas below:.
When placed into a. Note: If an object definition only has a small number of properties, it can be written on a single line like this, with the properties separated by semi-colons:. Obviously, the Rectangle object declared in this example is very simple indeed, as it defines nothing more than a few property values. To create more useful objects, an object declaration may define many other types of attributes: these are discussed in the QML Object Attributes documentation.
The types which may be used within a document depends on which modules, resources and directories are imported by the document. There are three different types of imports. Each import type has a slightly different syntax, and different semantics apply to different import types. The most common type of import is a module import. This import allows the use of all of the types provided by the QtQuick module without needing to specify a qualifier. For example, the client code to create a rectangle is as follows:.
This import allows multiple modules which provide conflicting type names to be imported at the same time, however since each usage of a type provided by a module which was imported into a qualified namespace must be preceded by the qualifier, the conflict is able to be resolved unambiguously by the QML engine.
An example of client code which creates a rectangle after using a qualified module import is as follows:. Note that if a QML document does not import a module which provides a particular QML object type, but attempts to use that object type anyway, an error will occur.
For example, the following QML document does not import QtQuick and thus attempting to use the Rectangle type will fail:. The import name and version given this way form a module that can be imported to access the types. The import statement may optionally use the as keyword to specify that the types should be imported into a particular document-local namespace.
If a namespace is specified, then any references to the types made available by the import must be prefixed by the local namespace qualifier.
Below, the QtQuick module is imported into the namespace "CoreItems". Now, any references to types from the QtQuick module must be prefixed with the CoreItems name:. A namespace acts as an identifier for a module within the scope of the file.
The namespace does not become an attribute of the root object that can be referred to externally as can be done with properties, signals and methods. The namespaced import is useful if there is a requirement to use two QML types that have the same name but are located in different modules. In this case the two modules can be imported into different namespaces to ensure the code is referring to the correct type:.
Note that multiple modules can be imported into the same namespace in the same way that multiple modules can be imported into the global namespace. For example:. This provides a simple way for QML types to be segmented into reusable groupings: directories on the filesystem. Note: Import paths are network transparent: applications can import documents from remote paths just as simply as documents from local paths.
If the directory is remote, it must contain a directory import listing qmldir file as the QML engine cannot determine the contents of a remote directory if that qmldir file does not exist.
Stack Overflow for Teams is a private, secure spot for you and your coworkers to find and share information. There's another question on Stackoverflow about this matter but I don't find the accepted solution possible. So I ask again because the old question is out of attention.
The situation is this way. I have application screens defined by 'main. These screens share the same toolbar below title bar. The toolbar has multiple items so copy-paste the QML code is like crazy. Let's assume you have a file called main. If both files are in the same directory you can directly load the component like this:. If MyCustomText. Another important thing to note is that your QML files should always start with an uppercase letter if you want to be able to use them this way.
Of course your Loader solution works too but this is the easiest way to import QML files in other components. Finally I have dug it out from internet. Let's say the to-be-included file is 'mycomponent. See Qt documentation about reuseable components.
The imported QML file defines a type whose name is the same as the filename capitalized, less the. QML calls the type a reuseable component. You use that type name to instantiate an object in the importing QML document file. Its not like a C language include, where the text of the included file is inserted into the including file.Information including non-IFRS financial measures requiring additional explanation or terms which begin with capital letters and the explanations or definitions thereto are provided at the end of this announcement.
For the Full-Year Results presentation please click here. During the Group continued to implement its strategy of harnessing the recovery of the container market, developing additional revenue streams, improving operational efficiency, maximising Free Cash Flow generation, and deleveraging.
The Group continued to deliver strong growth in bulk throughput posting a In accordance with the Group's strategy of developing additional revenue streams, a new coal handling facility at ULCT was successfully launched in December As a result, revenue increased by 4. Gross profit increased by Group financial and operational highlights for the twelve months ended 31 December The growth rate of the Group's Consolidated Marine Container Throughput therefore outpaced that of the Russian container market.
As a result, Consolidated Marine Bulk Throughput increased by ULCT has excellent rail connectivity and the capability to support up to 1.
This was mainly driven by Only a low single digit percentage of the reduction in Revenue per TEU was attributable to change in tariffs, with the majority of the decline largely attributable to lower share of imports and the change in customer and service mix. As previously announced, the proceeds of the sale were used for further deleveraging. Total Operating Cash Costs decreased by 2.
This substantial increase was driven both by the growth in Gross profit and the fact that was negatively impacted by non-monetary items such as impairment, loss from the Group's share of the result in joint ventures, and recycling of derivative losses previously recognised through other comprehensive income.
This change was mainly driven by the depreciation of the Russian rouble which resulted in a loss on revaluation of US dollar-denominated borrowings from Group and non - Group entities in the Group's Russian subsidiaries having the Russian rouble as their functional currency.
Maintenance capital expenditure focused on planned maintenance projects, scheduled upgrades of existing container handling equipment and coal handling equipment at VSC as well as the implementation of environmental protection measures related to coal handling.
Maintenance capex remained in line with the Group's mid-term guidance of USD million per annum with the remainder accounting for development of a new coal handling facility at ULCT.
While the law stipulates the mandatory currency of tariffs, it does not restrict port operators' ability to change actual tariff levels. Tariffs for stevedoring services in Russian ports remain unregulated and are market-driven.
Since the law came into force, the Group has retained its legal ability to revise tariff policy in response to substantial changes in the industry, currency fluctuations or macroeconomic environment. Although the share of rouble nominated revenues is expected to increase inthe group believes that its FX exposure is adequately balanced by the currency composition of its debt portfolio, the currency of its cash and deposits and the use of hedging instruments in relation to both revenue and debt.
We delivered double digit container handling growth, outpacing the growth of the Russian container market, and achieved another year of record volume of bulk cargo throughput. Our strategic focus on building alternative revenue streams is delivering with our non-container business now representing more than a quarter of our revenue. In addition, we laid a solid foundation for future performance by launching a new coal handling facility at ULCT.
Looking more broadly at the industry, the Russian container market is experiencing fundamental change.
We need to ensure that our business adapts in line with these market changes or, even better, sets the trend. My core priority as CEO is to ensure that the Group remains focused and capable of capturing organic growth opportunities that are available in both the container and bulk cargo market in order to further improve the utilisation of our unique asset base.
Further information is available in the following Appendices:.