【QT】Windows环境下,cmake引入QML

这里使用的QT库为5.7版本。

1、添加环境变量

QT库根目录环境变量 QTDIR

QT库平台插件环境变量 QT_PLUGIN_PATH

QML支持环境变量 QML2_IMPORT_PATH (该环境变量仅在需要使用QML时添加)

QT库动态库环境变量,bin目录下包含了QT程序运行所需的dll文件,添加到环境变量 Path

2、qrc 文件配置

新建一个 .qrc 文件,这里命名为 qml.qrc,.qrc是一个Qt资源文件,用于将QML文件、图片等资源打包到一个二进制文件中。

html 复制代码
<RCC>
    <!-- prefix 定义了资源的访问路径 -->
    <qresource prefix="/">
        <file>qml/main.qml</file>        <!-- main.qml 文件在qml目录下 -->
        <file>image.png</file>           <!-- image.png在 .qrc 文件同级目录下 -->
    </qresource>
</RCC>

后续访问 main.qml 文件的路径格式为:

qrc:<prefix><file>

bash 复制代码
qrc:/qml/main.qml

3、cmake 配置

3.1 cmake引入QT库

bash 复制代码
find_package(Qt5 COMPONENTS REQUIRED
    Gui
    Quick
    Qml
    Core
    Widgets
)
if(Qt5_FOUND)
    message(STATUS "Qt5 is found")
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
    set(CMAKE_AUTOUIC ON)       # 自动编译 .ui 文件
    set(CMAKE_AUTORCC ON)       # 自动编译 .qrc 文件
    set(CMAKE_AUTOMOC ON)       # 自动编译包含宏 Q_OBJECT 的文件
endif()

3.2 添加 qrc 资源文件

bash 复制代码
file(GLOB ALL_SOURCES *.c *.cpp)
file(GLOB ALL_INCLUDES *.h *.hpp)
set(ALL_SRCS 
    ${ALL_SOURCES} 
    ${ALL_INCLUDES}
    qml.qrc         # qml.qrc是一个Qt资源文件,用于将QML文件、图片等资源打包到一个二进制文件中
)   

add_executable(${PROJECT_NAME} ${ALL_SRCS})

3.3 目标文件链接到 QT库

bash 复制代码
target_link_libraries(${PROJECT_NAME}
    Qt5::Gui
    Qt5::Quick
    Qt5::Qml
    Qt5::Core
    Qt5::Widgets
)

4、cpp 主程序

bash 复制代码
#include <QtGui/QGuiApplication>
#include <QtQml/QQmlApplicationEngine>
#include <stdio.h>

int main(int argc, char** argv)
{
    QGuiApplication app(argc, argv);
	QQmlApplicationEngine engine;

	// 建立信号和槽的连接

	// 显示QML文件
	engine.load(QUrl(QStringLiteral("qrc:/qml/main.qml")));	// qrc: + <prefix> + <file>
	if (engine.rootObjects().isEmpty())
        return -1;

    return app.exec();
}
相关推荐
孤廖6 分钟前
吃透 C++ 栈和队列:stack/queue/priority_queue 用法 + 模拟 + STL 标准实现对比
java·开发语言·数据结构·c++·人工智能·深度学习·算法
驰羽15 分钟前
[GO]GORM中的Tag映射规则
开发语言·golang
非凡的世界35 分钟前
深入理解 PHP 框架里的设计模式
开发语言·设计模式·php
小龙报36 分钟前
《算法通关指南---C++编程篇(3)》
开发语言·c++·算法·visualstudio·学习方法·visual studio
凤山老林42 分钟前
排序算法:详解插入排序
java·开发语言·后端·算法·排序算法
郝学胜-神的一滴1 小时前
Effective STL 第5条:区间成员函数优先于单元素成员函数
开发语言·c++·程序人生·stl·软件工程
江公望1 小时前
Qt的QT_QPA_EGLFS_INTEGRATION环境变量浅解
linux·qt·qml
杨福瑞2 小时前
C语言数据结构:算法复杂度(2)
c语言·开发语言·数据结构
道之极万物灭2 小时前
Go基础知识(一)
开发语言·后端·golang
张晓~183399481212 小时前
碰一碰发视频 系统源码 /PHP 语言开发方案
开发语言·线性代数·矩阵·aigc·php·音视频·文心一言