C++QT教程3——手册4.11.1自带教程(笔记)——创建一个QT快速应用

文章目录

  • 创建一个QT快速应用
    • 创建项目
    • 创建主视图
    • 添加应用逻辑
    • 为视图添加动画
    • 素材文件
  • 参考文章

创建一个QT快速应用

本教程使用内置的QML类型,介绍了Qt Quick的基本概念。有关可以选择的用户界面选项的更多信息,请参阅用户界面。

本教程描述了如何使用Qt Creator实现Qt Quick状态和过渡。我们创建一个应用程序,在单击页面上的三个矩形时,显示一个移动的Qt标志。

关于QML:

QML(Qt Meta-Object Language)类型是一种用于构建用户界面的声明性语言。它是Qt Quick框架的核心组成部分,用于描述应用程序的外观和行为。
QML类型是可重用的元素,可以通过组合和嵌套来创建复杂的用户界面。每个QML类型都有属性、信号和方法,可以在其他QML类型中使用和操作。
Qt提供了一些内置的QML类型,如Rectangle(矩形)、Text(文本)、Image(图片)等,这些类型可以直接在QML文件中使用。此外,还可以创建自定义的QML类型,以满足特定的需求。
使用QML类型,可以通过简单而直观的方式构建现代、响应式和动态的用户界面。它使得开发者能够更轻松地实现界面的交互和动画效果。

在这里插入图片描述

有关在设计模式下开发Qt Quick应用程序的更多信息,请参阅开发Qt Quick应用程序。

有关使用Qt Quick控件的示例,请参阅Qt Quick控件示例。

创建项目

  1. 选择“文件”>“新建文件或项目”>“应用程序”>“Qt Quick应用程序-滑动”>“选择”。
  2. 在“名称”字段中输入应用程序的名称。
  3. 在“创建位置”字段中输入项目文件的路径,然后选择“下一步”(或在macOS上选择“继续”)。
  4. 在“构建系统”字段中,选择要用于构建和运行项目的构建系统:qmake、CMake或Qbs。
  5. 在“Qt Quick控件样式”字段中,选择要使用的预定义UI样式之一,然后选择“下一步”。
  6. 选择要为其构建应用程序的平台的工具集。要构建适用于移动设备的应用程序,请选择Android ARM和iPhone OS的工具集,然后单击“下一步”。

注意:如果已在“工具”>“选项”>“工具集”(Windows和Linux)或“Qt
Creator”>“首选项”>“工具集”(macOS)中指定了工具集,则会列出工具集。

  1. 选择“下一步”。
  2. 查看项目设置,然后单击“完成”(或在macOS上单击“完成”)。

Qt Creator生成两个UI文件,Page1Form.ui.qml和Page2Form.ui.qml,以及一个QML文件,main.qml。可以在表单编辑器中修改Page1Form.ui.qml以创建应用程序的主视图,并在文本编辑器中修改main.qml以添加应用程序逻辑。对于本示例,可以忽略Page2Form.ui.qml。

创建主视图

应用程序的主视图在视图的左上角显示一个Qt标志和两个空矩形。

要在应用程序中使用qt-logo.png图像,必须将其从Qt示例目录复制到项目目录(与QML文件相同的子目录)。该图像将显示在资源中。也可以使用任何其他图像或QML类型。

  1. 在Projects视图中,双击打开Page1Form.ui.qml文件以在设计模式下编辑。
    在这里插入图片描述

  2. 在导航器中,选择Label并按Delete键删除它。

  3. 在导航器中选择Page,并在Id字段中输入page。

  4. 在Library > Resources中,选择qt-logo.png并将其拖放到导航器中的页面上。
    在这里插入图片描述
    a. 在Id字段中输入icon。
    b. 在Position字段中,将X设置为10,Y设置为20。

  5. 在Projects视图中右键单击资源文件qml.qrc,并选择Add Existing File将qt-logo.png添加到用于部署的资源文件中。

  6. 将一个Rectangle拖放到导航器中的页面上,并编辑其属性。
    在这里插入图片描述
    a. 在Id字段中输入topLeftRect。
    b. 在Size字段中,将W设置为55,H设置为41,使矩形大小与图像大小相匹配。
    c. 在Color字段中,点击(透明)按钮使矩形透明。
    d. 在Border color字段中,将边框颜色设置为#808080。
    e. 点击Layout,然后点击(Top)和(Left)锚定按钮将矩形锚定到页面的左上角。
    f. 在Margin字段中,为顶部锚点选择20,为左侧锚点选择10。
    在这里插入图片描述

  7. 从库中将Mouse Area类型拖放到导航器中的topLeftRect上。

  8. 点击Layout,然后点击在这里插入图片描述
    (Fill to Parent)按钮将鼠标区域锚定到矩形上。

  9. 在导航器中,通过按Ctrl+C复制topLeftRect,并按Ctrl+V将其粘贴到页面上两次。Qt Creator会将新实例命名为topLeftRect1和topLeftRect2。

  10. 选择topLeftRect1并编辑其属性:
    a. 在Id字段中输入middleRightRect。
    b. 在Layout中,选择在这里插入图片描述
    (垂直居中锚定按钮),然后选择在这里插入图片描述
    (右侧)锚定按钮将矩形锚定到其父级的中右边距。
    c. 在Margin字段中,为右侧锚点选择10,为垂直居中锚点选择0。

  11. 选择topLeftRect2并编辑其属性:
    a. 在Id字段中输入bottomLeftRect。
    b. 在Layout中,选择在这里插入图片描述
    (底部)和在这里插入图片描述
    (左侧)锚定按钮将矩形锚定到其父级的左下边距。
    c. 在Margin字段中,为底部锚点选择20,为左侧锚点选择10。

  12. 在导航器中,选择每个类型的在这里插入图片描述
    (导出)按钮以将所有类型导出为属性。这使可以在main.qml文件中使用这些属性。

  13. 按Ctrl+S保存更改。

要检查的代码,可以在文本编辑器中查看Page1Form.ui.qml文件,并将其与Page1Form.ui.qml示例文件进行比较。

新项目向导向Page1.qml文件添加样板代码以创建菜单项和推送按钮。通过删除过时的代码来修改样板代码。已从UI表单中删除了推送按钮,因此还需要从Page1.qml中删除相应的代码(否则无法构建应用程序)。

现在UI已经准备好,可以切换到在文本编辑器中编辑main.qml文件,以添加动画到应用程序,如下一节所述。
在这里插入图片描述

添加应用逻辑

编辑 main.qml 文件,添加两个额外状态 State1 和 State2 的指针。你无法使用表单编辑器为 Window QML 类型添加状态。请使用文本编辑器将状态添加到 StateGroup QML 类型中,并通过使用状态组的 id 引用它们。\

  1. 将窗口大小和背景颜色指定为 ApplicationWindow 类型的属性:

    ApplicationWindow {visible: truewidth: 640height: 480title: qsTr("Tabs")
    
  2. 为 Page1 类型指定一个 id,以便能够使用在 Page1Form.ui.qml 中导出的属性:

    SwipeView {id: swipeViewanchors.fill: parentcurrentIndex: tabBar.currentIndexPage1Form {id: page
    
  3. 在 mouseArea 中添加一个指向点击表达式的指针:

    	mouseArea {onClicked: stateGroup.state = ' '}
    
  4. 该表达式将状态设置为基本状态,并将图像返回到初始位置。
    在 mouseArea1 中添加一个指向点击表达式的指针,将状态设置为 State1:

    	mouseArea1 {onClicked: stateGroup.state = 'State1'}
    
  5. 在 mouseArea2 中添加一个指向点击表达式的指针,将状态设置为 State2:

        mouseArea2 {onClicked: stateGroup.state = 'State2'}
    }
    
  6. 将 Qt 标志的位置绑定到矩形,以确保在不同大小的屏幕上缩放视图时,标志显示在矩形内部。设置 x 和 y 属性的表达式,如下面的代码片段所示:

      StateGroup {id: stateGroupstates: [State {name: "State1"PropertyChanges {target: page.iconx: page.middleRightRect.xy: page.middleRightRect.y}},State {name: "State2"PropertyChanges {target: page.iconx: page.bottomLeftRect.xy: page.bottomLeftRect.y}}]
    
  7. 按 Ctrl+R 运行应用程序。
    点击矩形以将 Qt 标志从一个矩形移动到另一个矩形。

为视图添加动画

在状态组内添加过渡以定义当Qt标志在状态之间移动时属性如何变化。这些过渡将动画应用于Qt标志。例如,当它移动到middleRightRect时,Qt标志会反弹回来,并平稳地进入bottomLeftRect。

  1. 在文本编辑器中,添加以下代码以指定当移动到State1时,Qt标志的x和y坐标在线性时间内变化1秒钟:

      transitions: [Transition {from: "*"; to: "State1"NumberAnimation {easing.type: Easing.OutBounceproperties: "x,y";duration: 1000}},
    
  2. 可以使用Qt Quick工具栏中的动画功能将缓动曲线类型从线性更改为OutBounce:
    a. 在文本编辑器中单击NumberAnimation以显示在这里插入图片描述
    图标,然后单击该图标以打开工具栏:
    在这里插入图片描述
    b. 在Easing字段中,选择Bounce。
    c. 在Subtype字段中,选择Out。

  3. 添加以下代码以指定当移动到State2时,Qt标志的x和y坐标在2秒钟内变化,并且使用InOutQuad缓动函数:

      ...Transition {from: "*"; to: "State2"NumberAnimation {properties: "x,y";easing.type: Easing.InOutQuad;duration: 2000}},
    
  4. 添加以下代码以指定对于任何其他状态变化,Qt标志的x和y坐标在线性时间内变化200毫秒:

      ...Transition {NumberAnimation {properties: "x,y";duration: 200}}]
    

按Ctrl+R运行应用程序。
单击矩形以查看动画过渡效果。

素材文件

Files:

  • transitions/Page1Form.ui.qml
  • transitions/Page2Form.ui.qml
  • transitions/main.qml
  • transitions/qml.qrc
  • transitions/transitions.pro

Images:

  • transitions/qt-logo.png

参考文章

QT快速入门:创建您的第一个QML应用

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

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

相关文章

部署mysql到win10电脑上

中间出现了很多问题, 记录一下 我这边是去官网下载的 ,链接:https://dev.mysql.com/downloads/mysql/ 我这边选了不是最新版本的MySQL,因为第一次安装8.1.0版本的,死活运行不起来,直接卸载安重装了&#x…

常用的分布式计算引擎

记录一下,作为备忘。 常用的分布式计算引擎 多表关联的问题,由于NoSQL数据库主要用于海量存储和单表查询,一般都不支持join,需借助更上层的计算框架来实现多表关联,比如: 计算框架支持数据源执行效率Hive本地文件、…

后端项目打包上传服务器记录

后端项目打包上传服务器记录 文章目录 后端项目打包上传服务器记录1、项目打包2、jar包上传服务器 本文记录打包一个后端项目,上传公司服务器的过程。 1、项目打包 通过IDEA的插件进行打包: 打成一个jar包,jar包的位置在控制台可以看到。 2、…

ssm蜀都天香酒楼网站设计与实现

ssm蜀都天香酒楼的网站设计与实现028 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘要 近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首…

selenium语法进阶+常用API

目录 浏览器操作 浏览器回退,前进 与刷新 浏览器窗口设置大小 浏览器设置宽高 浏览器窗口最大化 浏览器控制滚动条 信息打印 打印页面的标题和当前页面的URL 定位一组元素 鼠标和键盘事件 键盘 鼠标 下拉框操作 通过索引定位(se…

【BASH】回顾与知识点梳理(三十二)

【BASH】回顾与知识点梳理 三十二 三十二. SELinux 初探32.1 什么是 SELinux当初设计的目标:避免资源的误用传统的文件权限与账号关系:自主式访问控制, DAC以政策规则订定特定进程读取特定文件:委任式访问控制, MAC 32.2 SELinux 的运作模式安…

安科瑞变电所运维平台在电力系统中应用分析

摘要:现代居民生活、工作对电力资源的需求量相对较多,给我国的电力产业带来了良好的发展机遇与挑战。探索电力系统基本构成, 将变电运维安全管理以及相应的设备维护工作系统性开展,能够根据项目实践工作要求,将满足要求…

C语言暑假刷题冲刺篇——day2

目录 一、选择题 二、编程题 🎈个人主页:库库的里昂 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏✨收录专栏:C语言每日一练 ✨其他专栏:代码小游戏C语言初阶🤝希望作者的文章能对你…

最小生成树,prim算法

Prim算法和Kruskal算法都是用于解决最小生成树问题的经典算法,它们在不同情况下有不同的适用性和特点。 Prim算法: Prim算法是一种贪心算法,用于构建一个无向图的最小生成树。算法从一个初始节点开始,逐步添加与当前树连接且具有…

【自动电压调节器】无功功率控制的终端电压控制研究(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【加强管理】《别输在不懂管理上》学习记录,黄金41条

成功有时是很难效法的,但失败是可以避免的,从失败中吸取经验和教训才是管理者的必修课。释义: 图形含义🌲一级重要🍀二级重要🌿三级主要🍁存在问题🌼解决办法 1 不能从头管到脚 不…

【讨论】视频监控集中存储方案如何做?

视频监控集中存储是指将多个视频监控摄像头所捕捉到的视频信号集中存储于一个中央设备,这个中央设备可以是服务器、网络存储设备或其他专用设备。通过集中存储,可以避免因为存储设备分散而导致的管理不便和难以有效地管理和检索视频数据,同时…

RTT(RT-Thread)ADC设备(RTT保姆级介绍)

目录 ADC设备 前言 ADC相关参数说明 访问ADC设备 配置ADC设备 ADC实例 硬件设计 软件设计 ADC设备 前言 ADC(Analog-to-Digital Converter) 指模数转换器。是指将连续变化的模拟信号转换为离散的数字信号的器件。 对于ADC的详细介绍和在STM32中的裸机应用可参考以下…

pandas数据分析38——数据框表格拓展以及缩回对齐

案例背景 需求是这个样的: 把这个表格进行拓展。 代码实现: df pd.DataFrame(np.array([[1, 2, 3,4], [a,b, c,d], [小明,小红, 小马,小天]])) df 方法一:自定义函数: def expand_dataframe(df):m, n df.shapenew_df pd.Dat…

linux系统中设置服务开机自启动

1:背景描述 最近根据工作需要,需要服务实现开机自启动的效果,因为平时只使用过nohup的后台挂起操作,很少接触开机,镜像装机服务自启动的功能,因此,这里简单记录一下。 注意,开机自…

解锁数据潜力:信息抽取、数据增强与UIE的完美融合

解锁数据潜力:信息抽取、数据增强与UIE的完美融合 1.信息抽取(Information Extraction) 1.1 IE简介 信息抽取是 NLP 任务中非常常见的一种任务,其目的在于从一段自然文本中提取出我们想要的关键信息结构。 举例来讲&#xff0…

从NLP到聊天机器人

一、说明 今天,当打电话给银行或其他公司时,听到电话另一端的机器人向你打招呼是很常见的:“你好,我是你的数字助理。请问你的问题。是的,机器人现在不仅可以说人类语言,还可以用人类语言与用户互动。这是由…

windows权限维持—黄金白银票据隐藏用户远控RustDeskGotoHttp

windows权限维持—黄金白银票据&隐藏用户&远控&RustDesk&GotoHttp 1. 前置1.1. 初始问题1.1.1. 解决办法 2. 隐藏用户2.1. 工具原理2.2. 案例操作2.2.1. 单机添加用户2.2.1.1. 工具添加用户2.2.1.2. 工具查看隐藏用户2.2.1.3. 本地查看隐藏用户 2.2.2. 域内添加…

NeuralNLP-NeuralClassifier的使用记录(二),训练预测自己的【中文文本多分类】

NeuralNLP-NeuralClassifier的使用记录,训练预测自己的【中文文本多分类】 数据准备: ​ 与英文的训练预测一致,都使用相同的数据格式,将数据通过代码处理为JSON格式,以下是我使用的一种,不同的原数据情况…

java+springboot+mysql理发会员管理系统

项目介绍: 使用javaspringbootmysql开发的理发会员管理系统,系统包含超级管理员,系统管理员、客户、发型师角色,功能如下: 超级管理员:管理员管理;会员管理;发型师管理&#xff1b…