QML 项目提供 'unavailable type error' CMake 配置 (Qt 6.2)
QML project gives 'unavailable type error' with CMake configuration (Qt 6.2)
我已经使用 Qt6.2-MinGW-64bit 创建了一个测试项目,我选择了 CMake。
项目结构如图所示。只有3个测试文件相互嵌入,第一个测试文件(test1.qml)用于main.qml.
现在当我想启动程序时,它给出了一个奇怪的错误,即 Test2 不可用。我尝试了不同的场景并检查了 CMake 中的所有步骤,但没有成功。
这里是 main.qml:
import QtQuick
import untitled35
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
property Test1 _example: Test1 {}
}
这是 CMakeFile:
cmake_minimum_required(VERSION 3.16)
project(untitled35 VERSION 0.1 LANGUAGES CXX)
set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 6.2 COMPONENTS Quick REQUIRED)
qt_add_executable(appuntitled35
main.cpp
)
qt_add_qml_module(appuntitled35
URI "untitled35"
VERSION 1.0
QML_FILES
main.qml
core/Test1.qml
core/Test2.qml
core/components/Test3.qml
)
set_target_properties(appuntitled35 PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)
target_compile_definitions(appuntitled35
PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>)
target_link_libraries(appuntitled35
PRIVATE Qt6::Quick)
你的问题是Test2有错误。 QtObject
没有默认的 属性 来将您创建的 Test3 对象放入其中。 Item
将子元素放在它的子元素中,但 QtObject
不做这种假设。尝试将 QtObject
更改为 Item
。 Documentation for default properties and Documentation 对于 Item
数据 属性 这是它的默认值。
我已经使用 Qt6.2-MinGW-64bit 创建了一个测试项目,我选择了 CMake。 项目结构如图所示。只有3个测试文件相互嵌入,第一个测试文件(test1.qml)用于main.qml.
现在当我想启动程序时,它给出了一个奇怪的错误,即 Test2 不可用。我尝试了不同的场景并检查了 CMake 中的所有步骤,但没有成功。
这里是 main.qml:
import QtQuick
import untitled35
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
property Test1 _example: Test1 {}
}
这是 CMakeFile:
cmake_minimum_required(VERSION 3.16)
project(untitled35 VERSION 0.1 LANGUAGES CXX)
set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 6.2 COMPONENTS Quick REQUIRED)
qt_add_executable(appuntitled35
main.cpp
)
qt_add_qml_module(appuntitled35
URI "untitled35"
VERSION 1.0
QML_FILES
main.qml
core/Test1.qml
core/Test2.qml
core/components/Test3.qml
)
set_target_properties(appuntitled35 PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)
target_compile_definitions(appuntitled35
PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>)
target_link_libraries(appuntitled35
PRIVATE Qt6::Quick)
你的问题是Test2有错误。 QtObject
没有默认的 属性 来将您创建的 Test3 对象放入其中。 Item
将子元素放在它的子元素中,但 QtObject
不做这种假设。尝试将 QtObject
更改为 Item
。 Documentation for default properties and Documentation 对于 Item
数据 属性 这是它的默认值。