qt quick工程升级,qmake工程升级至cmake
升级原因
由于音视频工作需要,qt6比qt5的video相关更看重效率。
升级中遇到的问题
在开发的过程中,为了更快速的进行开发,对业务其他不需要代码运行效率的地方使用qml+js的方式进行编写。在升级的过程中发现,程序是可以正常编译通过的,而在运行的时候会提示main.qml:没有找到文件或目录,猜测脚本文件没有编译到工程中。
本文仅介绍工程文件的升级,主要解决脚本文件的编译和路径转换的问题
如下代码所示是5.15工程的资源管理文件qml.qrc
<RCC>
    <qresource prefix="/">
        <file>qml/main.qml</file>
        <file>js/database.js</file>
    </qresource>
</RCC>
如下代码所示是6.2工程的CMakeLists.txt
# 设置CMAKE最小版本
cmake_minimum_required(VERSION 3.16)
# 设置工程名称
project(appclient VERSION 0.1 LANGUAGES CXX)
# 设置编译选项
set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 增加宏定义,如不使用signals slots emit关键字
ADD_DEFINITIONS(-DQT_NO_KEYWORDS)
# 查找qt安装目录
set(CMAKE_PREFIX_PATH $ENV{HOME}/Qt6/6.2.4/gcc_64)
find_package(Qt6 6.2
  COMPONENTS
# 引用qt中的模块
    Quick
    Multimedia
    WebSockets
  REQUIRED
)
# 第三方头文件目录
include_directories()
# 链接动态库目录
link_directories()
# 源文件
qt6_add_executable(appclient
  main.cpp
)
# 与qrc结构一致,解决在启动时候找不到qml文件的问题
qt6_add_resources(appclient "client"
  PREFIX
    "/"
  FILES
    "qml/main.qml"
    "js/database.js"
)
set_target_properties(appclient PROPERTIES
  MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
  MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
  MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
  MACOSX_BUNDLE TRUE
  WIN32_EXECUTABLE TRUE
)
target_compile_definitions(appclient
  PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>)
target_link_libraries(appclient
  PRIVATE
# 链接使用到的模块
  Qt6::Quick
  Qt6::Multimedia
  Qt6::WebSockets
)
qt quick工程升级,qmake工程升级至cmake的更多相关文章
- 在Qt Quick中一个简单Hello World加载过程
		Qt5基本类图: QQmlEngine QQmlEngine类提供了一个QML引擎,用于管理由QML文档定义的对象层次架构,QML提供了一个默认的QML上下文(根上下文,获取函数QQmlEngi ... 
- 用 cmake 构建Qt工程(对比qmake进行学习)
		cmake vs qmake qmake 是为 Qt 量身打造的,使用起来非常方便 cmake 使用上不如qmake简单直接,但复杂换来的是强大的功能 内置的 out-of source 构建.(目前 ... 
- Qt Quick 用cmake怎么玩子项目
		以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/o-_aGqreuQda-ZmKktvxwA 以往在公司开发众多的项目中 ... 
- [UE4]把工程升级到最新版本
		右键UE4工程文件,选择“Switch Unreal Engine version...” 确定后,再次双击打开工程升级到最新版本了. 
- idea升级maven工程jar包版本和解决jar包冲突
		原来用过eclipse的都知道,想要升级maven工程的jar包版本或者解决jar包冲突,直接在pom文件下的dependency hierarchy视图下右击冲突的jar包,将其exclude掉,然 ... 
- QT中使用pri子工程
		QT中使用pri子工程 使用子工程的作用是使得工程结构更加清晰,举个例子: 我制作了一个自定义控件,具备通用性,我打算把它用在日后的工程中.制作的这个控件需要用到头文件h.源文件c,资源文件qrc.图 ... 
- 浏览器上的Qt Quick
		你想不想在浏览器上运行你的Qt Quick程序呢?在Qt 5.12之前,唯一的方法是使用Qt WebGL Streaming技术把界面镜像到浏览器上.但该方法有不少缺陷,下文会说.前不久随着Qt 5. ... 
- 一文入门Qt Quick
		以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16733091.html 初识Qt Quick 很高兴可以 ... 
- 从头学Qt Quick(3)-- 用QML写一个简单的颜色选择器
		先看一下效果图: 实现功能:点击不同的色块可以改变文字的颜色. 实现步骤: 一.创建一个默认的Qt Quick工程: 二.添加文件Cell.qml 这一步主要是为了实现一个自定义的组件,这个组件就是我 ... 
- 从头学Qt Quick(1) --体验快速构建动态效果界面
		自2005年Qt4发布以来,Qt已经为成千上万的应用程序提供了框架服务,现在Qt已经基本上支持所有的开发平台了,这里面既包含了桌面.嵌入式领域,也包括了Android.IOS.WP等移动操作平台,甚至 ... 
随机推荐
- Docker容器网络基础总结
			ifconfig 之 docker0 基于Linux的虚拟网桥(通用网络设备的抽象) 虚拟网桥特点: 1. 可以设置IP地址 2.相当于拥有一个隐藏的虚拟网卡 docker0 的地址划分 IP: 17 ... 
- 【设计模式】Java设计模式 - 外观模式
			Java设计模式 - 外观模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 原创作品,更多关注我CSDN: 一个有梦有戏的人 准备将博客园.CSDN一起记录分享自己 ... 
- Redux(mvc、flux、react-redux)
			其他章节请看: react实战 系列 Redux 关于状态管理,在 Vue 中我们已经使用过 Vuex,在 spug 项目中我们使用了 mobx,接下来我们学习 Redux. 本篇以较为易懂的方式讲解 ... 
- Java SE 四大内部类
			内部类 1.成员内部类 调用成员内部类 //在外面的类的最后,写一个方法,调用成员内部类(创建对象,在访问) class Outer08{ class Inner08{ //成员内部类 public ... 
- Prometheus 监控 Kubernetes Job 资源误报的坑
			转载自:https://www.qikqiak.com/post/prometheus-monitor-k8s-job-trap/ 昨天在 Prometheus 课程辅导群里面有同学提到一个问题,是关 ... 
- 【ProxySQL】ProxySQL Cluster的搭建
			文章转载自:https://blog.51cto.com/l0vesql/2104643 背景 早期的ProxySQL若需要做高可用,需要搭建两个实例,进行冗余.但两个ProxySQL实例之间的数据并 ... 
- 使用 Dockerfile 的一些最佳实践
- Java删除word合并单元格时的重复值
			Spire.Doc提供了Table.applyVerticalMerge()方法来垂直合并word文档里面的表格单元格,Table.applyHorizontalMerge()方法来水平合并表格单元格 ... 
- day47-JDBC和连接池03
			JDBC和连接池03 8.事务 8.1事务介绍 基本介绍 JDBC程序中当一个Connection对象创建时,默认情况下是自动提交事务:每次执行一个SQL语句时,如果执行成功,就会向数据库自动提交,而 ... 
- Typora设置代码块Mac风格三个圆点
			写作不停,美化不止! mac小圆点效果 原本代码块样式就挺....干净的,光秃秃的,太单调了: 是吧很丑,于是自己发挥改成了这样: 好吧还是太单调,也没好看到哪里去,于是隔了两天又重新改,DuangD ... 
