当前位置: 首页 > article >正文

【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文件、图片等资源打包到一个二进制文件中。

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

qrc:/qml/main.qml

 

3、cmake 配置

3.1 cmake引入QT库

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 资源文件

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库

target_link_libraries(${PROJECT_NAME}
    Qt5::Gui
    Qt5::Quick
    Qt5::Qml
    Qt5::Core
    Qt5::Widgets
)

4、cpp 主程序

#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();
}

http://www.kler.cn/a/159685.html

相关文章:

  • sql专题 之 where和join on
  • 修改数据库和表的字符集
  • 【Excel】ToRow超级查找函数
  • 【PHP】ThinkPHP基础
  • 力扣662:二叉树的最大宽度
  • HAproxy 详解
  • Elasticsearch 如何处理 Aggs 顺序中的大写字母和小写字母?
  • C语言每日一题(41)循环队列
  • C语言——指针(四)
  • 图扑参展高交会-全球清洁能源创新博览会
  • 从零构建属于自己的GPT系列2:模型训练1(预训练中文模型加载、中文语言模型训练、逐行代码解读)
  • 运维之远程桌面连接失败问题排查
  • java8 升级 java11
  • Hive数据库系列--Hive数据类型/Hive字段类型/Hive类型转换
  • 循环队列中的求队列长度公式怎么来的?【数学角度】
  • 【华为OD题库-068】找出经过特定点的路径长度-java
  • 【数电笔记】07-基本和复合逻辑运算
  • 『亚马逊云科技产品测评』活动征文|基于亚马逊云EC2搭建OA系统
  • uniapp打包的h5项目多了接口调用https://api.next.bspapp.com/client
  • 1.1美术理论基础
  • 快手数仓面试题附答案
  • 流量异常-挂马造成百度收录异常关键词之解决方案(虚拟主机)
  • python内存处理和常见的内存泄漏场景
  • 【从删库到跑路 | MySQL数据库总结篇】JDBC编程
  • 【论文】F1的单位是%还是1,mAP的单位是%还是1?答:F1的单位是1,mAP的单位是%
  • flutter的CircularProgressIndicator基本使用