型の欠落
この警告カテゴリは、qmllint では「[missing-type] 」と表記されます。
エイリアスの型を推論できません
何が起きたのか?
エイリアスプロパティが、C++ 型を持つプロパティを指しているものの、その QML 対応するプロパティが見つかりませんでした。これは、他のモジュールへの QML 依存関係を宣言していない QML モジュールをインポートしたことが原因である可能性があります。
注: 外部依存関係を持つ QML モジュールをインポートしている場合は 、それらが実際にインストールされていること、およびそれらのモジュールがインポートパスに含まれていることを確認してください。
また、この警告は、エイリアスが参照するプロパティの型に QML 対応するものが存在しないことを示している可能性もあります。たとえば、参照されるプロパティの型に `QML_ELEMENT ` マクロが欠けている場合などです。この場合は、「C++ から QML 型を定義する」または「概要 - QML と C++ の統合」を参照してください。
なぜこれが問題なのでしょうか?
QMLツールは、C++型のQML対応型を見つけることができません。そのため、コンパイラはこのプロパティエイリアスをC++にコンパイルできず、qmllintも QML Language Server このプロパティエイリアスを解析することもできません。
例
あるQMLモジュールに、myProperty というプロパティを持つC++クラスが1つあるとします:
#include <QQuickItem>
#include <QtQml/qqmlregistration.h>
#include <QObject>
class MyCppObject : public QObject
{
Q_OBJECT
QML_ELEMENT
public:
MyCppObject(QObject *parent = nullptr)
: QObject(parent)
{}
Q_PROPERTY(QQuickItem *myProperty READ myProperty WRITE setMyProperty NOTIFY notifyMyProperty)
QQuickItem *myProperty() { return m_myProperty; }
void setMyProperty(QQuickItem *item) { emit notifyMyProperty(); m_myProperty = item; }
private:
QQuickItem *m_myProperty;
signals:
void notifyMyProperty();
};CMakeLists.txt は次のように定義されています:
project(mymodule VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 6.5 REQUIRED COMPONENTS Quick)
qt_standard_project_setup(REQUIRES 6.5)
qt_add_executable(appmymodule
main.cpp
)
qt_add_qml_module(appmymodule
URI mymodule
VERSION 1.0
QML_FILES Main.qml HelloWorld.qml
SOURCES mycppobject.cpp mycppobject.h
)
target_link_libraries(appmymodule
PRIVATE Qt6::Quick
)C++の依存関係Quick が宣言されており、これによりこのクラスはコンパイル可能となり、QQuickItem のインクルードファイルも見つかります。また、mymodule には、 Qt Quick。
それでは、QML内のエイリアスでmyProperty を使用してみましょう。プログラムは実行されますが、コンパイラなどのQMLツールは、myProperty の使用について警告を出します:
import mymodule
MyCppObject {
id: root
property alias myAlias: root.myProperty // not ok: Cannot deduce type of alias [missing-type]
}この警告メッセージが表示される理由は、QMLファイルにimport QtQuick が含まれていても、QMLコード内ではmyProperty の型QQuickItem とそのQML対応型Item が認識されないためです。これは、異なるモジュール内で同じ型が異なる属性を持って複数回公開される可能性があるためです。mymodule は、myProperty のQML型について正確に指定する必要があります。
この警告を解消するには、CMakeLists.txt に依存関係を追加してください:
qt_add_qml_module(mymodule
URI mymodule
...
# declarare QML dependency to QtQuick module
DEPENDENCIES QtQuick
...
)これで、警告は解消されるはずです!
「モジュール依存関係の宣言」も参照してください。
プロパティに対応するタイプが見つかりません
何が起きたのでしょうか?
QML タイプが見つからないプロパティにバインディングが設定されました。これは、他のモジュールへの QML 依存関係を宣言していない QML モジュールが原因である可能性があります。
注: 外部依存関係を持つ QML モジュールをインポートしている場合は 、それらが実際にインストールされていること、およびそれらのモジュールがインポートパスに含まれていることを確認してください。
また、この警告は、プロパティの型に QML 側の対応する型がないことを示している可能性もあります。たとえば、プロパティの型に `QML_ELEMENT ` マクロが欠けている場合などです。この場合は、「C++ からの QML 型の定義」または「概要 - QML と C++ の統合」を参照してください。
なぜこれが問題なのでしょうか?
QMLツールは、C++型のQMLでの対応型を見つけられません。コンパイラはこのプロパティバインディングをC++にコンパイルできず、qmllintも QML Language Server このプロパティバインディングを解析することもできません。
例
ある QML モジュールに、myProperty とmyProperty2 という 2 つのプロパティを持つ C++ クラスがあるとします:
#include <QQuickItem>
#include <QtQml/qqmlregistration.h>
#include <QObject>
class MyCppObject : public QObject
{
Q_OBJECT
QML_ELEMENT
public:
MyCppObject(QObject *parent = nullptr)
: QObject(parent)
{}
Q_PROPERTY(QQuickItem *myProperty READ myProperty WRITE setMyProperty NOTIFY notifyMyProperty)
QQuickItem *myProperty() { return m_myProperty; }
void setMyProperty(QQuickItem *item) { emit notifyMyProperty(); m_myProperty = item; }
Q_PROPERTY(QQuickItem *myProperty2 READ myProperty2 WRITE setMyProperty2 NOTIFY notifyMyProperty2)
QQuickItem *myProperty2() { return m_myProperty2; }
void setMyProperty2(QQuickItem *item) { emit notifyMyProperty2(); m_myProperty2 = item; }
private:
QQuickItem *m_myProperty;
QQuickItem *m_myProperty2;
signals:
void notifyMyProperty();
void notifyMyProperty2();
};CMakeLists.txt は次のように定義されています:
project(mymodule VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 6.5 REQUIRED COMPONENTS Quick)
qt_standard_project_setup(REQUIRES 6.5)
qt_add_executable(appmymodule
main.cpp
)
qt_add_qml_module(appmymodule
URI mymodule
VERSION 1.0
QML_FILES Main.qml HelloWorld.qml
SOURCES mycppobject.cpp mycppobject.h
)
target_link_libraries(appmymodule
PRIVATE Qt6::Quick
)C++ 依存関係 `Quick ` が宣言されており、これによりこのクラスはコンパイル可能であり、`QQuickItem ` のインクルードファイルも見つかります。また、`mymodule ` には、 Qt Quick。
それでは、QML内のエイリアスで `myProperty2 ` を `myProperty ` にバインドしてみましょう。プログラムは実行されますが、コンパイラなどのQMLツールは、`myProperty` の使用について警告を出します:
import mymodule
MyCppObject {
id: root
myProperty: myProperty2 // not ok: No type found for property "myProperty". [missing-type]
}この警告メッセージが表示される理由は、QMLコード内で、myProperty の型であるQQuickItem とそのQML対応型であるItem が認識されていないためです。つまり、mymoduleの依存関係であるQtQuick がCMakeLists.txt で宣言されていませんでした。
この警告を解消するには、CMakeLists.txt に依存関係を追加してください:
qt_add_qml_module(mymodule
URI mymodule
...
# declarare QML dependency to QtQuick module
DEPENDENCIES QtQuick
...
)これで、警告は解消されるはずです!
「モジュールの依存関係の宣言」も参照してください。
© 2026 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.