- Qt 6.9
- Qt Qml
- QML Lint Warning and Errors
- Unqualified
- Qt 6.9.1 Reference Documentation

# Unqualified

This warning category is spelled `[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.