Unqualified

This warning category is spelled c{[unqualified]} by qmllint.

Unqualified access

What happened?

You accessed a parent element without its id.

Why is this bad?

This makes the code harder to read and impedes performance.

Example

import QtQuick

Item {
    property int helloWorld
    Item {
        property int unqualifiedAccess: helloWorld + 1 // not ok: Unqualified access here.
    }
}

To fix this warning, refer to the parent object by id. You will need to add an id first if the object currently has none.

import QtQuick

Item {
    id: root
    property int helloWorld
    Item {
        property int unqualifiedAccess: root.helloWorld + 1 // ok: this access is qualified now!
    }
}

Unknown attached/grouped property scope

What happened?

You used an attached property type or grouped property that can't be found. This can be caused by a typo or by a missing QML module dependency.

Note: If you are importing QML modules with external dependencies, verify that they are actually installed and inside an import path.

Why is this bad?

Components with unknown attached property scopes or unknown grouped properties will not be created at runtime: they will be null instead.

Example

Let's try to use the (inexistent) attached property of Item or the (inexistent) grouped property grouped of Item:

import QtQuick

Item {
    Item.helloAttached: 44 // not ok: unknown attached property scope Item. [unqualified]
    grouped.helloGrouped: 44 // not ok: unknown grouped property scope grouped. [unqualified]
}

Indeed, Item does neither have any attached type nor any grouped property called item. To fix this warning, remove the attached type and the grouped property.

Refer to Attached Properties and Attached Signal Handlers on how to use attached properties and to Grouped Properties on how to use grouped properties.

No matching signal found for handler

What happened?

You used a signal handler on a signal that can't be found. This can be caused by a typo in the signal handler or by a missing QML module dependency.

Note: The name of a signal handler is on concatenated with the capitalized signal name. onHelloWorld handles the signal helloWorld and on_helloWorld handles _helloWorld, for example.

Note: If you are importing QML modules with external dependencies, verify that they are actually installed and inside an import path.

Why is this bad?

Components with unknown signal handlers will not be created at runtime: they will be null instead.

Example

Lets try to write a signal handler for the (inexistent) signal mySignal:

import QtQuick

Item {
    onMySignal: console.log("hello") // not ok: no matching signal found for handler "onMySignal" [unqualified]
}

Indeed, this Item does not have any signal called mySignal. To fix this warning, remove the signal handler or add the missing signal.

Implicitly defining signal handler in Connections is deprecated

What happened?

You used a signal handler on a Connections type.

Why is this bad?

This is deprecated.

Example

import QtQuick

Window {
    id: root
    property int myInt

    Connections {
        target: root
        onMyIntChanged: console.log("new int", myInt)
    }
}

To fix this warning, replace the signal handler binding with a function:

import QtQuick

Window {
    id: root
    property int myInt

    Connections {
        target: root
        function onMyIntChanged() { console.log("new int", myInt) }
    }
}

See also QML Coding Conventions - Unqualified Access.

© 2024 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.