QML-1- qml简介及项目创建

文章目录

  • 1. QML 简介
  • 2. 项目创建
  • 3. 目录结构
  • 4. CMakeLists.txt 简单介绍
  • 5. 运行demo

1. QML 简介

根据官网介绍,qml 为qt一个模块,使用Qml语言开发应用程序和库提供了一个框架。它定义并实现了语言和引擎基础结构,并提供了一个API,使应用程序开发人员能够注册自定义QML类型和模块,并将QML代码与JavaScript和c++集成在一起。Qt Qml模块提供了Qml API和c++ API。
简单来说就是其集成了一个JS引擎,可以实现c++和js互调,使用ji的方式来声明式构建图形界面。

官网文档地址:https://doc.qt.io/all-topics.html

2. 项目创建

选择Qt Quick 应用
在这里插入图片描述
输入项目名,选择项目创建路径
在这里插入图片描述

这里构建工具使用CMake, 既然官方都放弃qmake使用cmake了, 那就使用cmake
在这里插入图片描述
选择你需要的版本, 没需求就选最新
在这里插入图片描述
next
在这里插入图片描述
在这里插入图片描述
这里不需要版本控制的话直接选None
在这里插入图片描述

3. 目录结构

在这里插入图片描述

  • CMakeLists.txt:
    位于项目根目录下。这是CMake的配置文件,用于定义如何构建你的项目。包括指定项目名称、版本、源文件、依赖项、编译选项等。
  • 源代码目录(上例QML_demo1)
    • Source Files
      存放C++源代码文件。
    • qml.qrc
      qml文件存放目录,
  • CMake Modules
    项目用到的其他一些CMake模块

4. CMakeLists.txt 简单介绍

# 1、 设置 CMake 变量
cmake_minimum_required(VERSION 3.14)    # CMake最低版本project(QML_demo1 VERSION 0.1 LANGUAGES CXX)       # 项目版本0.1,编程语言C++set(CMAKE_INCLUDE_CURRENT_DIR ON)       # 确保编译器在当前源文件的目录中查找包含的头文件# 自动处理(自动执行) Qt 的 uic、moc 和 rcc 文件。这通常是必要的
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)# 设置 C++ 标准为 C++17,并强制要求该标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)# 2、查找 Qt 包
# 尝试先查找 Qt6,如果找不到则查找 Qt5。这里指定了需要 Core 和 Quick 组件
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Quick)
# 基于先前找到的 Qt 版本(Qt5 或 Qt6),再次查找并确认需要的组件
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Quick)# 3. 定义项目源文件
# 设置项目源文件列表,包括 C++ 源文件和 QML 资源文件
set(PROJECT_SOURCESmain.cppqml.qrc
)# 4、 根据项目类型和 Qt 版本创建目标:
# 对于 Qt 6,使用 qt_add_executable 创建一个可执行文件。
# 对于 Qt 5,如果目标平台是 Android,则创建一个共享库;否则,创建一个可执行文件
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)qt_add_executable(QML_demo1MANUAL_FINALIZATION${PROJECT_SOURCES})
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET QML_demo1 APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()if(ANDROID)add_library(QML_demo1 SHARED${PROJECT_SOURCES})
# Define properties for Android with Qt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")else()add_executable(QML_demo1${PROJECT_SOURCES})endif()
endif()# 5、 链接库:
# 将 Qt 的 Core 和 Quick 组件链接到可执行文件
target_link_libraries(QML_demo1PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Quick)# 6、 设置目标属性:
# 对于 macOS,设置 bundle 相关的属性
set_target_properties(QML_demo1 PROPERTIESMACOSX_BUNDLE_GUI_IDENTIFIER my.example.comMACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}MACOSX_BUNDLE TRUEWIN32_EXECUTABLE TRUE
)# 7、 安装目标:
# 使用 install 命令指定如何安装构建的目标。对于 macOS bundle,它将被安装到根目录;对于库,它将被安装到 ${CMAKE_INSTALL_LIBDIR} 指定的目录
install(TARGETS QML_demo1BUNDLE DESTINATION .LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
#8、 Qt 6 特定的步骤:
# qt_import_qml_plugins(QML_demo1):对于 Qt 6,确保 QML 插件被正确导入到可执行文件中。
# qt_finalize_executable(QML_demo1):对于 Qt 6,确保所有 Qt 相关的资源(如 QML、翻译等)都被正确地包含在可执行文件中。
if(QT_VERSION_MAJOR EQUAL 6)qt_import_qml_plugins(QML_demo1)qt_finalize_executable(QML_demo1)
endif()

5. 运行demo

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/17053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jQuery事件导读+其它方法

jQuery 事件导读一、事件注册二、事件处理1.内容2.例子,微博绑定事件3.off解绑事件4.自动触发事件 三、事件对象 其他方法一、拷贝对象二、多库共存三、插件 事件导读 一、事件注册 单个事件叫注册,多个事件叫处理 二、事件处理 1.内容 2.例子&#…

今日上新——FCP

今年2月,我们FCC-E产品全新上线了专有D区,专门满足用户对高性价比的稀缺大机型需求。 产品研发组的小伙伴们根本停不下来~ 才几个月,我们又又上新了! 今天的新品是FCP(fastone Compute Platform)&#x…

VMware ESXi中安装Proxmox VE

0、巴拉巴拉 前几天某行业HW,闲暇的时候几个技术人员聊天,臭味相投的聊到自己玩的东西。有个玩家说家里用工作站安装Proxmox VE,然后在上面安装软路由、安装NAS。我以前一直想玩玩,没有付诸行动,所以也想弄个集中的方案…

分享目前堪称最好用的车机桌面app,支持画中画模式!

好用的车机桌面了,支持悬浮画中画! 如果你想改变单调的车机桌面,那么这篇文章你不要错过了!支持地图悬浮、画中画的车机桌面,不要错过! 今天阿星给大家分享3款好用、好看的大屏桌面软件,重要的…

如何在Namecheap上购买域名

文章目录 如何在Namecheap上购买国外域名,话不多说直接上步骤↓1:注册Namecheap账号2:选购域名3:如何付款4:付款购买域名5:总结 如何在Namecheap上购买国外域名,话不多说直接上步骤↓ 原文链接…

学习双向链表带哨兵demo

定义 在计算机科学中,链表是数据元素的线性集合,其每个元素都指向下一个元素,元素存储上并不连续。 双向链表,每个元素知道其上一个元素和下一个元素。 以下为示例代码: package com.tfq.arithmetic.linkedlist;imp…

Flask 蓝图路由的模块化开发

基于 Flask 蓝图路由的模块化开发 1. 编程目标 为了提高Flask应用的可维护性和可扩展性,我们通过使用Flask的蓝图(Blueprint)功能,可以将不同的功能模块拆分到独立的文件中,方便后续的开发和维护。 2. 项目结构 项目结构树如下&#xff1…

高斯过程学习笔记

目录 基础知识 例子 推荐 A Visual Exploration of Gaussian Processes (distill.pub) AB - Introduction to Gaussian Processes - Part I (bridg.land) 基础知识 高斯过程回归(Gaussian Process Regression) - 知乎 (zhihu.com) 高斯过程&#x…

马斯克xAI公司获60亿美元融资,超级计算工厂将于2025年秋季前问世

马斯克旗下的xAI公司宣布了一项令人瞩目的计划——建造一个名为“超级计算工厂”的巨型超级计算机。这一前所未有的项目不仅体现了马斯克对于人工智能(AI)技术的深刻洞察,也彰显了他在技术创新上的坚定决心。 据悉,超级计算工厂将…

7个靠谱的副业赚钱方法,个个都可以月入过万!宝妈,上班族,学生党都可以做的兼职副业

你是不是也有过这样的困扰,生活费不够用,想要找个兼职贴补家用或者满足自己的小欲望?今天,我就带你一起走进这个五彩斑斓的兼职世界,让你轻松实现月入过千的小目标! 在我多年的兼职探险历程中,我…

local dimming(局部调光)介绍

文章目录 1. 什么是local dimming2. 工作原理3. 类型4. 优点5. 缺点和局限7. 技术发展趋势 1. 什么是local dimming local dimming(局部调光)是电视和显示器中用于提升画面对比度和画质的背光技术。其基本原理是将背光源(通常是LED&#xff…

C++ ─── string的模拟实现

本博客将简单实现来模拟实现string类,最主要是实现string类的构造、拷贝构造、赋值运算符重载以及析构函数。 下期我们继续讲解完整版string的模拟实现(将不再会是浅拷贝了) 说明:下述string类没有显式定义其拷贝构造函数与赋值运…

Java应用中文件上传安全性分析与安全实践

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 目录 引言 一. 文件上传的风险 二. 使用合适的框架和库 1. Spr…

从华为云Redis到AWS ElastiCache的操作方法

越来越多企业选择出海,那么就涉及到IT系统的迁移,本文将详细介绍如何将华为云Redis顺利迁移到AWS ElastiCache的操作方法,九河云将为您介绍迁移步骤以帮助您顺利完成这一重要任务。 **1. 确定迁移计划** 在开始迁移之前,首先要制…

科普:水冷负载的工作原理

水冷负载是一种利用水作为冷却介质,将电子设备产生的热量传递到外部环境的散热方式。它广泛应用于各种电子设备,如服务器、数据中心、电力设备等,以提高设备的运行效率和稳定性。本文将对水冷负载的工作原理进行简要科普。 水冷负载的工作原理…

NLP(17)--大模型发展(1)

前言 仅记录学习过程,有问题欢迎讨论 大模型的演化: ElMO : 类似双向lstm 结果和词向量拼接 预训练鼻祖 GPT :使用了Transformer 模型 开始使用Token (发现预训练的作用) Bert:认为双向比单向好 MLM(双向) 优于 LT…

【Linux】POSIX线程库——线程控制

目录 1.线程创建方法 例:多线程创建 2.线程终止 2.1 return nulptr; 2.2 pthread_exit(nullptr); 3. 线程等待 3.1 等待原因 3.2 等待方法 线程终止的返回值问题 4.线程取消 5. 线程分离 5.1 分离原因 5.2 分离方法 6.封装线程 用的接口是POSIX线程库…

音视频开发—音频相关概念:数模转换、PCM数据与WAV文件详解

文章目录 前言1.模拟数字转换(ADC)1.1ADC的关键步骤: 2.数字模拟转换(DAC)2.1DAC 的基本流程包括: 3.PCM数据3.1PCM 数据的关键要素包括: 4.WAV文件4.1 WAV的构成4.2WAV文件的标准块结构4.3WAV的…

OpenLayers6入门,OpenLayers实现在地图上拖拽编辑修改绘制图形

专栏目录: OpenLayers6入门教程汇总目录 前言 在前面一章中,我们已经学会了如何绘制基础的三种图形线段、圆形和多边形:《OpenLayers6入门,OpenLayers图形绘制功能,OpenLayers实现在地图上绘制线段、圆形和多边形》,那么本章将在此基础上实现图形的拖拽编辑功能,方便我…

使用Java 读取PDF表格数据并保存到TXT或Excel

目录 导入相关Java库 Java读取PDF表格数据并保存到TXT Java读取PDF表格数据并保存到Excel 在日常工作中,我们经常需要处理来自各种来源的数据。其中,PDF 文件是常见的数据来源之一。这类文件通常包含丰富的信息,其中可能包含重要的表格数据…