在 CMake 项目中配置和使用自定义 QML 模块的详细步骤:
1. 创建自定义 QML 模块
- 创建模块目录:
在 Qt 项目中创建一个目录来存放自定义 QML 模块,例如 MyModule。
在该目录中创建一个 qmldir 文件和你自定义的 QML 文件。
MyModule/qmldir
:
module MyModule MyComponent 1.0 MyComponent.qml
MyModule/MyComponent.qml
:
import QtQuick 2.15 Rectangle { width: 100 height: 100 color: "red" }
2. 配置 CMake 文件
在 CMake 配置文件中指定 QML 模块路径:
告诉 CMake 和 Qt 你的自定义 QML 模块的位置。
CMakeLists.txt
:
cmake_minimum_required(VERSION 3.16) project(MyQtApp) find_package(Qt6 REQUIRED COMPONENTS Core Quick) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) # Add your QML module directory to the QML import path set(QML_IMPORT_PATH ${CMAKE_SOURCE_DIR}/MyModule) # Define the executable add_executable(MyQtApp main.cpp qml.qrc ) # Link the Qt libraries target_link_libraries(MyQtApp PRIVATE Qt6::Core Qt6::Quick) # Set QML import path target_compile_definitions(MyQtApp PRIVATE QML_IMPORT_PATH="${QML_IMPORT_PATH}") # Specify QML and QRC files qt_add_qml_module(MyQtApp URI MyModule VERSION 1.0 QML_FILES MyModule/MyComponent.qml )
这个 CMake 配置做了以下几件事:
使用 qt_add_qml_module 命令来配置 QML 文件和模块。
通过 target_compile_definitions 指定 QML 模块的导入路径。
3. 编写主程序和 QML 文件
编写主程序来加载 QML:
main.cpp
:
#include <QGuiApplication> #include <QQmlApplicationEngine> int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QQmlApplicationEngine engine; // Load QML file engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); return app.exec(); }
在主 QML 文件中使用自定义模块:
main.qml
:
import QtQuick 2.15 import MyModule 1.0 ApplicationWindow { visible: true width: 640 height: 480 MyComponent { anchors.centerIn: parent } }