qml import 自定义模块 cmake

简介: qml import 自定义模块 cmake

在 CMake 项目中配置和使用自定义 QML 模块的详细步骤:

1. 创建自定义 QML 模块

  1. 创建模块目录:

在 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
    }
}


目录
相关文章
|
4月前
|
存储 JSON C++
Qt cmake 增加qml文件:深度剖析Qt cmake 的qt_add_qml_module函数
Qt cmake 增加qml文件:深度剖析Qt cmake 的qt_add_qml_module函数
198 0
|
4月前
|
编译器 C++ 计算机视觉
QT 插件创建
QT 插件创建
43 0
|
4月前
|
算法 关系型数据库 编译器
[项目配置] 配置Qt函数库和ui界面库的封装并调用的项目(一)
[项目配置] 配置Qt函数库和ui界面库的封装并调用的项目
152 0
|
4月前
|
C++
[项目配置] 配置Qt函数库和ui界面库的封装并调用的项目(二)
[项目配置] 配置Qt函数库和ui界面库的封装并调用的项目
83 0
|
11月前
|
机器学习/深度学习 缓存 Python
Python中import模块导入的实现原理
Python中import模块导入的实现原理
68 0
|
XML 数据格式 Python
『PyQt5-基础篇』| 05 Qt Designer保存的.ui文件如何生成.py文件?
『PyQt5-基础篇』| 05 Qt Designer保存的.ui文件如何生成.py文件?
135 0
|
JSON C++ 数据格式
如何通过CMake将Qt库引入C++项目
如何通过CMake将Qt库引入C++项目
335 0
|
JavaScript 前端开发 开发者
ES6模块化与导出(export)导入(import)的用法
1.ES6模块化的介绍 在 ES6 模块化规范诞生之前,JavaScript 社区已经尝试并提出了 AMD、CMD、CommonJS 等模块化规范。 但是,这些由社区提出的模块化标准,还是存在一定的差异性与局限性、并不是浏览器与服务器通用的模块化 标准,例如: ⚫ AMD 和 CMD 适用于浏览器端的 Javascript 模块化 ⚫ CommonJS 适用于服务器端的 Javascript 模块化 太多的模块化规范给开发者增加了学习的难度与开发的成本。因此,大一统的 ES6 模块化规范诞生了!
245 1
ES6模块化与导出(export)导入(import)的用法
|
存储 Java Unix
Python中的模块、包、import module1,mudule2、from…import、from … import *、as、定位模块、模块中的__all__和__name__、模块的注意点
在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入想一想:为什么必须加上模块名调用呢?因为可能存在这样一种情况:在多个模块中含有相同名称的函数,此时如果只是通过函数名来调用,解释器无法知道到底要调用哪个函数。所以如果像上述这样引入模块的时候,调用函数必须加上模块名通过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块名,但是当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一次引入。也就是说假如模块A中有函数fun
202 1
Python中的模块、包、import module1,mudule2、from…import、from … import *、as、定位模块、模块中的__all__和__name__、模块的注意点