QT6学习第五天 第一个QT Quick程序

QT6学习第五天 第一个QT Quick程序

  • 概述
    • 创建Qt Quick程序
    • 使用Qt资源文件
    • 程序发布

概述

如果将程序的用户界面成为前端,程序的数据存储和逻辑业务成为后端,那么传统QT Widgets程序的前后端都是用C++完成的。对于现代软件开发而言,前端演化速度远快于后端。当要改变界面或重新开发界面时,很难快速只针对前端来开发。
而QT Quick提供了一个适合于开发用户界面的声明式环境。在这里,可以向HTML代码一样声明界面,后端依然使用C++代码。这种设计使得程序的前后端分离,可以分别演化。
QT Quick程序可以同时包含QML和C++代码。可以部署到移动或桌面平台。
在Qt Creator 中,这种项目叫Qt Quick Application。

创建Qt Quick程序

  • 新建项目,命名helloworld,这里它默认构建系统为CMake,我也没看见哪里能改。
    在这里插入图片描述
    CMake是一组可以进行构建、测试和打包程序的工具集,它可以在所有主要开发平台上使用,并被多中IDE支持,可以很好的简化跨平台项目的构建过程。QT6中CMake得到了很好的支持,可以自己学习下CMake知识。

因为我看的这本书里用的qmake,所以还得从创建空项目开始,烦死了!

  • 我们创建一个空项目,命名helloworld,然后在pro文件中添加 QT += quick

  • 添加 main.qml 文件。
    在这里插入图片描述

  • 修改 main.qml 文件
    QML代码文件以 .qml 作为后缀,QML是代码语言。

import QtQuick 2.15

//window对象用来创建一个顶层窗口
Window{
    //设置宽高
    width:640
    height:480
    //设置可显示,默认不显示
    visible:true
    //设置标题,qsTr() 转换字符,使各种字符都可显示
    title:qsTr("Hello World!")

    //Text对象,显示一个字符串
    Text{
        id:text1
        text:qsTr("Hello World! 你好哈哈哈!")
        //位置放到窗口中心
        anchors.centerIn:parent
    }
}

  • 添加 main.cpp 文件,并添加代码
#include <QGuiApplication>
#include <QQmlApplicationEngine>

//此次主要功能是加载 QML 文件
int main(int argc,char *argv[]){
    //创建 QGui 应用,和Qwidget应用一样
    QGuiApplication app(argc,argv);
    //创建 QQmlApplicationEngine 对象,可加载 QML 文件
    QQmlApplicationEngine engine;
    //load() 加载 QML 文件
    engine.load(QUrl::fromLocalFile("../../main.qml"));

    return app.exec();
}

运行看看吧

使用Qt资源文件

QT中的资源系统(The Qt Resource System)是一个独立于平台的机制,可以将资源文件打包到应用程序可执行文件中,并且使用特定的路径来访问它们。如果在应用程序中经常使用一些文件,例如图标、翻译文件、图片等,而且不想使用系统特定的方式来打包和定位这些资源,那么就可以将它们放入资源文件中。

在前面的源码目录中新建文件夹,命名images,向其中放入一张图片,随便放一个png图片。然后进入Qt Creator 编辑模式中,添加新文件,模板选Qt分类下的 Qt Resource File,命名resource.qrc。然后打开 resource.qrc 文件,点击添加前缀,设置为“/”,再点击添加文件,把 png 图片添加进去,保存。
在这里插入图片描述
在这里插入图片描述

在 main.qml 中Window对象最后边添加代码来使用资源文件。

//Image 对象用来显示一张图片
Image{
	id:logo
	//大小
	width:100;height:100
	//路径 以 qrc 开头
	source:"qrc:/images/logo.png"
	//
	anchors.horizontalCenter:text1.horizontalCenter
	anchors.top:text.bottom
	anchors.topMargin:10
}

然后我们右击 resource.qrc 文件,选择“用…打开 -> 普通文本编辑器“,能够看到 qrc 文件其实是个 XML 文件。
我们会发现添加资源文件后会自动在 pro 文件中生成一些代码

RESOURCE += \
	resource.qrc

以后自己手动添加已有的资源文件时,就在这里手动添加代码。
另外,编译时会对加入的资源文件自动压缩,这些内容可在 QT 帮助中通过 The Qt Resource System中查看。

接下来,我们再添加一个 qml 文件,命名 MyText.qml ,“添加到项目”选项会默认选择 resource.qrc 。
在 MyText.qml 中写代码

import QtQuick

Text{
	text:qsTr("欢迎关注!)
	color:"green"
}

在 main.qml 中的Window对象最后边添加代码

MyText{
	anchors.top:log.bottom
	anchors.horizontalCenter:logo.horizontalCenter
}

这样会在 logo 图片下面显示一行文字,现在运行一下吧

实际项目中会把所有的 qml 文件都放到一起,你可以右键 qrc 文件,选择“用…打开”,选择资源管理器,把 main.qml 添加进去。再把 main.cpp 中的加载QML文件路径改为 "qrc:/../../main.qml"

程序发布

与之前讲的 Qt Widgets 程序发布类似,要想发布 Qt Quick 程序,首先要使用 Release 方式编译程序,然后生成 exe 文件再把需要的库文件拿过那放一起打包好最后发布。
确定需要哪些 dll 文件,也就是库文件,笨方法是,运行 exe 文件,提示缺少哪个 dll ,你就复制哪个过来。
还有一个方法是使用 windeployqt.exe 工具,先编译出 release 版本的 exe ,把 exe 复制到要发布的路径下。然后打开 Qt 6.8.0(MinGW)命令行,输入 windeployqt --qmldir E: 项目路径 D:/要发布的路径

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】单目操作符详解:前置与后置自增自减及正负号操作

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;单目操作符概述1 自增与自减操作符&#xff1a; 和 --2 前置 和 后置 案例 1&#xff1a;前置 案例 2&#xff1a;后置 小技巧 3 前置 -- 和 后置 --案例 1&#xff1a;前…

SAP SD学习笔记15 - 投诉处理2 - 返品处理流程之 参照请求传票(发票)来生成返品传票

上一章讲了返品处理&#xff08;退货处理&#xff09;的流程。 SAP SD学习笔记14 - 投诉处理1 - 返品处理&#xff08;退货处理&#xff09;的流程以及系统实操&#xff0c;比如 返品传票&#xff1b;请求Block标记&#xff1b;收到退货之后的处理&#xff0c;请求传票的登录_…

【C语言】二叉树(BinaryTree)的创建、3种递归遍历、3种非递归遍历、结点度的实现

代码主要实现了以下功能&#xff1a; 二叉树相关数据结构定义 定义了二叉树节点结构体 BiTNode&#xff0c;包含节点数据值&#xff08;字符类型&#xff09;以及指向左右子树的指针。 定义了顺序栈结构体 SqStack&#xff0c;用于存储二叉树节点指针&#xff0c;实现非递归遍历…

【博主推荐】C# Winform 拼图小游戏源码详解(附源码)

文章目录 前言摘要1.设计来源拼图小游戏讲解1.1 拼图主界面设计1.2 一般难度拼图效果1.3 普通难度拼图效果1.4 困难难度拼图效果1.5 地域难度拼图效果1.6 内置五种拼图效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载结束语 前言 在数字浪潮汹涌澎湃的时代&#xff0c;程序开…

C++初阶(十七)--STL--stack和queue详解及使用

目录 stack 概念 stack的定义 stack的使用 queue 概念 queue的定义 queue的使用 在 C 的标准模板库&#xff08;STL&#xff09;中&#xff0c;stack&#xff08;栈&#xff09;和queue&#xff08;队列&#xff09;是非常重要的容器适配器。它们基于其他基础容器实现&…

【ubuntu24.04】GTX4700 配置安装cuda

筛选显卡驱动显卡驱动 NVIDIA-Linux-x86_64-550.135.run 而后重启:最新的是12.6 用于ubuntu24.04 ,但是我的4700的显卡驱动要求12.4 cuda

远程桌面协助控制软件 RustDesk v1.3.3 多语言中文版

RustDesk 是一款开源的远程桌面软件&#xff0c;支持多平台操作&#xff0c;包括Windows、macOS、Linux、iOS、Android和Web。它提供端到端加密和基于角色的访问控制&#xff0c;确保安全性和隐私保护。使用简单&#xff0c;无需复杂配置&#xff0c;通过输入ID和密码即可快速连…

【Linux】gdb / cgdb 调试 + 进度条

&#x1f33b;个人主页&#xff1a;路飞雪吖~ &#x1f320;专栏&#xff1a;Linux 目录 一、Linux调试器-gdb &#x1f31f;开始使用 &#x1f320;小贴士&#xff1a; &#x1f31f;gdb指令 &#x1f320;小贴士&#xff1a; ✨watch 监视 ✨打条件断点 二、小程序----进…

C++初阶——动态内存管理

目录 1、C/C内存区域划分 2、C动态内存管理&#xff1a;malloc/calloc/realloc/free 3、C动态内存管理&#xff1a;new/delete 3.1 new/delete内置类型 3.2 new/delete自定义类型 4、operator new与operator delete函数 5、new和delete的实现原理 5.1 内置类型 5.2 自定…

开发一套ERP 第八弹 RUst 插入数据

更全面的报错,方便检查错误在哪里,现代高级语言越来越智能 还是得看下原文档怎么操作的 src 目录为crate 的根目录 想在crate 中模块相互引入需要在 main 中声明,各个模块,然后才能在各个模块中相互引入和使用 原始工程引入,避免直接使用 lib.rs 回合cargo 中的一些 工程管理出…

【学习笔记】基于RTOS的设计中的堆栈溢出(Stack Overflow)-第1部分

本文由RTOS专家Jean J. Labrosse撰写。 基于RTOS的应用程序中的每个任务都需要自己的堆栈,堆栈的大小取决于任务的要求(例如,函数调用嵌套、传递给函数的参数、局部变量等)。 为了避免堆栈溢出,开发人员需要过度分配堆栈空间,但不要太多,以避免浪费RAM。 什么是堆栈溢…

基于java+SpringBoot+Vue的教学辅助平台设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven mysql5.7或8.0等等组成&#x…

mfc110u.dll是什么意思,mfc110u.dll丢失解决方法大全详解

mfc110u.dll是Microsoft Foundation Classes (MFC)库的一个特定版本&#xff08;版本11.0&#xff09;的Unicode动态链接库文件。MFC是Microsoft为C开发者设计的一个应用程序框架&#xff0c;主要用于简化Windows应用程序的开发工作。这个框架封装了很多Windows API函数&#x…

MySQL查看日志

目录 1. 日志 1.1 错误日志 1.2 二进制日志 1.2.1 介绍 1.2.2 格式 1.2.3 查看 1.2.4 删除 1.3 查询日志 1.4 慢查询日志 1. 日志 1.1 错误日志 错误日志是 MySQL 中最重要的日志之一&#xff0c;它记录了当 mysqld 启动和停止时&#xff0c;以及服务器在运行过…

API平台建设之路:从0到1的实践指南

在这个互联网蓬勃发展的时代&#xff0c;API已经成为连接各个系统、服务和应用的重要纽带。搭建一个优质的API平台不仅能为开发者提供便利&#xff0c;更能创造可观的商业价值。让我们一起探讨如何打造一个成功的API平台。 技术架构是API平台的根基。选择合适的技术栈对平台的…

【组件封装】uniapp vue3 封装一个自定义下拉刷新组件pullRefresh,带刷新时间和加载动画教程

文章目录 前言一、实现原理二、组件样式和功能设计三、scroll-view 自定义下拉刷新使用回顾相关属性&#xff1a;最终版完整代码&#xff1a; 前言 手把手教你封装一个移动端 自定义下拉刷新组件带更新时间和加载动画&#xff08;PullRefresh&#xff09;&#xff0c;以uniapp …

2、Three.js初步认识场景Scene、相机Camera、渲染器Renderer三要素

三要素之间关系&#xff1a; 有了虚拟场景Scene&#xff0c;相机录像Camera&#xff0c;在相机小屏幕上看到的Renderer Scene当前空间 Mesh人在场景 Camera相机录像 Renderer显示器上 首先先描述下Scene&#xff1a; 这个场景为三要素之一&#xff0c;一切需要展示的东西都需…

Unity中的数学应用 之 插值函数处理角色朝向 (初中难度 +Matlab)

CodeMonkey教程&#xff1a; https://www.youtube.com/watch?vQDWlGOocKm8 Siki学院汉化教程&#xff1a;如何使用Unity开发分手厨房&#xff08;胡闹厨房&#xff09;-Unity2023 - SiKi学院|SiKi学堂 - unity|u3d|虚幻|ue4/5|java|python|人工智能|视频教程|在线课程 版本&am…

2-2-18-7 QNX 系统架构-动态链接

阅读前言 本文以QNX系统官方的文档英文原版资料为参考&#xff0c;翻译和逐句校对后&#xff0c;对QNX操作系统的相关概念进行了深度整理&#xff0c;旨在帮助想要了解QNX的读者及开发者可以快速阅读&#xff0c;而不必查看晦涩难懂的英文原文&#xff0c;这些文章将会作为一个…

PPT不能编辑,按钮都是灰色,怎么办?

PPT文件打开之后&#xff0c;发现无法编辑&#xff0c;再仔细查看发现工具栏中的功能按钮都是灰色的&#xff0c;无法使用&#xff0c;这是什么原因&#xff1f;该如何解决&#xff1f; 原因&#xff1a;无法编辑PPT文件&#xff0c;并且功能按钮都是灰色&#xff0c;这是因为…