【五一创作】Qt quick基础1(包含基本元素Text Image Rectangle的使用)

news2024/10/1 7:43:06

Qt quick基础1(包含基本元素Text Image Rectangle的使用)

目录

  • Qt quick基础1(包含基本元素Text Image Rectangle的使用)
    • 前言
    • qt中有直接设计ui的拖拽式的widget,为什么还需要Qtquick?
    • QML语言
    • Qt 版本
    • 创建一个Qt quick项目
    • Qt quick的Helloworld
    • 利用Image元素加入图片
    • 利用Rectangle元素作button
    • Qt Assistant使用
    • 小结

前言

最近需要看Qt的代码,虽然之前也接触过Qt,但是当时是使用可推拽式的ui设计,虽然体验很好,但是需要看的代码使用的是Qt quick,正好顺便学习一下,记录在此,以便之后忘记作回顾之用。

qt中有直接设计ui的拖拽式的widget,为什么还需要Qtquick?

Qt中设计UI的拖拽式的Widget,例如使用Qt Designer创建的窗口和控件等,这些Widget提供了一个方便且易于学习的方式来构建传统的图形用户界面(GUI),并且是使用C++编写的。

然而,随着移动端和现代化应用程序的兴起,GUI开发也面临着新的挑战。为了适应不同的屏幕尺寸和设备环境,并实现更快、更流畅的交互效果,Qt引入了Qt Quick框架。

Qt Quick是一种基于QML语言的声明式UI设计语言,它使用JavaScript来处理用户输入和逻辑控制,以及OpenGL进行渲染。Qt Quick提供了一种快速、灵活、高性能和可重用的方式来构建现代化应用程序的用户界面。与传统的Widget相比,Qt Quick具有以下优点:

  1. 高度可定制性:Qt Quick提供了各种内置的UI组件和布局,同时也支持自定义UI组件的创建,使得UI设计师和开发者能够更加灵活地实现他们的设计需求。
  2. 高性能:Qt Quick使用OpenGL进行渲染,能够在多种平台上实现高性能的UI渲染。
  3. 跨平台支持:Qt Quick支持在多种平台上构建现代UI,包括桌面、移动和嵌入式系统。
  4. 易于学习和使用:QML是一种声明式UI设计语言,与其他的UI设计语言相比,具有更低的学习曲线。

因此,尽管Qt中可以使用Widget来构建传统GUI,但Qt Quick提供了一个现代、高效且易于学习和使用的方式来构建现代化应用程序的用户界面。

QML语言

QML是一种声明性语言,用于描述应用程序的用户界面。它将用户界面分解为更小的元素,这些元素可以组合成组件。QML描述了这些用户界面元素的外观和行为。这个用户界面描述可以用JavaScript代码进行充实,以提供简单但也更复杂的逻辑。从这个角度来看,它遵循HTML-JavaScript模式,但QML从一开始就被设计为描述用户界面,而不是文本-文档。

Qt 版本

截至2022年5月3日,qt已经推出了6.6版本,但我使用的Qt5.15和Qt6.2两个版本,这两个版本都是LTS版本,也就是长期支持版本。在我看来,可能版本的不同会造成某些麻烦,如果你去看2012、2015年甚至2019年的Qt教程,可能其中有些内容已经不适用于现在的Qt版本了,当然这些教程大部分仍是适用的。

版本:win11+Qt5.15/6.2,或许选择6.4,6.5也是相当可以的,因为在创建Qt quick项目时,要求最低版本是6.2

创建一个Qt quick项目

  1. 打开Qt Creator的欢迎界面,在下面找到教程,你会在里面找到Qt quick创建的一个教程,

Qt教程

  1. 打开之后,你会发现这个教程很详细地在教你如何创建项目,并给出了一些实例,可能第一次看还不能直接有能力消化教程上的东西(好吧,是我菜),但至少学会了如何创建一个空的Qt quick项目

Qt教程

Qt quick的Helloworld

  1. 创建完一个空项目之后,你就可以直接运行了,运行后发现是个空白的有着“hello world”标题的窗口

hello world空白

  1. 我们可以在里面添加元素使其能够显示“hello world”的文字

    Text{
            text:"<h2>Hello world<h2>" //这里使用了html标签来更改字体的大小
            x:100;y:100 //设置位置,从左上角计算
            color: "darkgreen" //设置颜色
        }
    

    这里添加的是一个Text元素,顾名思义就是显示文本的元素。上面这段代码要放在Window这段代码之内,运行得到如下图所示的结果。

helloworld文本

利用Image元素加入图片

  1. 上面讲述了Text元素,接下来我们来尝试一下Image元素,它是用来插入和设置图片的,可以加载本地资源中的图片也可以加载url地址的资源图片,下面就以网络图片为例

      Image{
            x:12;y:250
            source: "https://ts1.cn.mm.bing.net/th/id/R-C.c1ef7c28ec0c3a03671bf8c5b84824a9?rik=gtgH8z39ogolSA&riu=http%3a%2f%2fimg.touxiangwu.com%2fuploads%2fallimg%2f230101%2f1_010120010R534.jpg&ehk=%2bP%2fA9Bc1Xw28uBxAFWEP0qGpscER%2bd8hq%2flkynX4qUw%3d&risl=&pid=ImgRaw&r=0"
            //可以加载网页图片
        }
    

    上面图片是我在网上随便找的,Image元素的用法当然远不止此,这里仅仅是做个展示。运行得到下面的结果

    加载图片

利用Rectangle元素作button

Rectangle是一个长方形区域,里面可以嵌套各种各样的元素以达到各种效果。

 Rectangle{
        id:button //调用这个矩形区域的唯一标识符,在程序中不允许重复
        x:500;y:300
        width:116;height:26
        color: "lightsteelblue"
        border.color: "slategrey" //设置边界颜色
        Text {  //嵌套Text元素
            anchors.centerIn: parent  //此处的parent即为Rectangle
            text: qsTr("start") //文本
        }
        MouseArea{ //鼠标区域元素
            anchors.fill: parent //鼠标区域即为整个Rectangle
            onClicked: {
                status.text ="Button clicked" //当被按下时,status的文本变为“button clicked”,staus这段代码还没涉及
            }
        }

    }

上述又出现了一个新的元素MouseArea,这个元素即是鼠标区域,用来响应鼠标的各种事件。

 Text{
        id:status //id
        x:500;y:350
        width: 116;height:26
        text: "waiting..."
        horizontalAlignment: Text.AlignHCenter
    }

这段代码和上述的代码所形成的效果是,上段的Rectangle被按下后,下段文本由“Waiting”变为“Button Clicked”,效果如下

button

上面代码中有一个“Onclicked”,这是一个信号处理器,当一个属性更改值时,会发出一个信号来告知这个更改,要获取这个信号,只需要创建一个信号处理器(signal handler),它使用“onChanged”语法来命名。例如,Rectangle元素拥有 width和color 属性下面的代码中我们在一个Rectangle对象中定义了两个信号处理器onWidthChanged和onColorChanged,无论何时属性被修改了,都会自动调用它们。

截至现在,如果运行项目的话,应该是这个样子的。

Qt Assistant使用

Qt在安装时都会有Assistant助手,它可以很方便的帮我们定位所要查找和使用的各种东西。

Qt助手

例如,我需要查找map相关的操作,就可以直接搜索“map”,并找到对应模块查看

assistant使用

当然,我也是刚刚学习,其实还不太会使用,属于是边学边写博客。更多的Qml元素也可以在这里面找到。

如,我需要查找map相关的操作,就可以直接搜索“map”,并找到对应模块查看

当然,我也是刚刚学习,其实还不太会使用,属于是边学边写博客。更多的Qml元素也可以在这里面找到。

小结

本文简单讲述Qt quick的项目创建以及几个简单的元素使用,能够实现加载图片,按钮、文本的显示与更改,并提及了Qt 助手的使用。

如果您觉得我写的不错,麻烦给我一个免费的赞!如果内容中有错误,也欢迎向我反馈。

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

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

相关文章

两分钟学会 制作自己的浏览器 —— 并将 ChatGPT 接入

前期回顾 分享24个强大的HTML属性 —— 建议每位前端工程师都应该掌握_0.活在风浪里的博客-CSDN博客2分享4个HTML5 属性&#xff0c;开发必备https://blog.csdn.net/m0_57904695/article/details/130465836?spm1001.2014.3001.5501 &#x1f44d; 本文专栏&#xff1a;开发…

一文解决MySQL突击面试,关键知识点总结

文章目录 MySQL重要知识点回顾一、索引1. 为什么需要索引2. 索引的结构3. 避免索引失效3.1 联合索引不满足最左匹配原则3.2 隐式转换3.3 like查询3.4 索引列存在运算或者使用函数3.5 优化器 4. 执行计划4.1 type4.2 key4.3 rows4.4 extra 5. 建立索引5.1 什么情况下应该建索引&…

【Unity入门】24.碰撞检测

【Unity入门】碰撞检测 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;碰撞体 &#xff08;1&#xff09;Collider组件 上节课我们有学习到&#xff0c;unity的物理系统提供了更方便的碰撞…

SPSS如何制作基本统计分析报表之案例实训?

文章目录 0.引言1.制作在线分析处理报告2.制作个案摘要报告3.制作行形式摘要报告4.制作列形式摘要报告 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对SPSS进行了学习&#xff0c;本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结…

全注解下的SpringIoc 续5-Bean的作用域

Bean的作用域主要有以下5种&#xff1a; 因为globalSession的作用域实践中基本不使用&#xff0c;所以这里就不对其过多介绍了。 另外application的作用域也完全可以用singleton作用域来代替&#xff0c;所以这里也不对其过多介绍了。 所以&#xff0c;我们主要看看singleton、…

Java——IO:输入输出流技术

简介 在java中&#xff0c;数据的输入输出都是以流的方式来处理。 流&#xff08;Stream&#xff09;&#xff0c;是一个抽象的概念&#xff0c;是指一连串的数据&#xff08;字符或字节&#xff09;&#xff0c;是以先进先出的方式发送信息的通道。 JDK中与输入/输出有关的…

Renesas瑞萨A4M2和STM32 CAN通信

刚好拿到一块瑞萨开发板&#xff0c;捣鼓玩下CAN&#xff0c;顺便试下固件升级。 A4M2 工程创建 详细可以参考&#xff0c;我之前写的文章 Renesa 瑞萨 A4M2 移植文件系统FAT32 CAN0 配置信息&#xff0c;使能FIFO&#xff0c;接收标准帧 ID为0x50&#xff0c;数据帧。 代…

汇编语言学习笔记六

flag 寄存器 CF:进位标志位&#xff0c;产生进位CF1&#xff0c;否则为0 PF:奇偶位&#xff0c;如010101b&#xff0c;则该数的1有3个&#xff0c;则PF0,如果该数的1的个数为偶数&#xff0c;则PF1。0也是偶数 ZF:在相关指令执行后&#xff08;运算和逻辑指令&#xff0c;传送指…

yml、xml、json文件

目录 一、yml &#xff08;1&#xff09;注释 &#xff08;2&#xff09;内容语法 &#xff08;3&#xff09;取名规范 二、xml &#xff08;1&#xff09;注释 &#xff08;2&#xff09;内容语法 声明头 标签 关于cdata 三、json &#xff08;1&#xff09;注释 …

MySQL库和表

MySQL库操作 创建数据库 语法 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,create_specification] ...] create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name说明: 大写的表示关键字[ ]是可选项CHARACTER…

axios使用笔记

文章目录 基本语法其他语法defaults config作用案例 创建实例对象作用案例 拦截器 interceptor&#xff08;AOP&#xff09;请求取消&#xff08;节流&#xff09; 基本语法 <!doctype html> <html lang"en"> <head><meta charset"UTF-8&…

ADRC自抗扰算法优化(PLC梯形图篇)

ADRC自抗扰算法PLC梯形图完整源代码请参看下面博客文章: ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法_RXXW_Dor的博客-CSDN博客PLC的自抗扰控制(ADRC)算法_RXXW_Dor的博客-CSDN博客_adrc算法1、自抗扰控制算法,网上很多文章有所讲解,大家也可以关注韩京清…

6WINDGate-overview

6WINDGate Overview Author&#xff1a;Once Day Date&#xff1a;2023年4月29日 本文是对6WIND官网文档的整理和翻译&#xff0c;仅供学习和研究之用&#xff0c;原始文章可参考下面文档&#xff1a; 6WINDGate Documentation - 6WIND6WINDGate Modules — 6WINDGate Modul…

武忠祥老师每日一题||定积分基础训练(三)

常用的基本不等式&#xff1a; sin ⁡ x < x < t a n x , x ∈ ( 0 , π 2 ) \sin x<x<\ tan x,x\in(0,\frac{\pi}{2}) sinx<x< tanx,x∈(0,2π​) e x ≥ 1 x , x ∈ ( − ∞ , ∞ ) e^x\ge1x,x\in(-\infty,\infty) ex≥1x,x∈(−∞,∞) x 1 x ≤ ln …

Ubuntu20.04 交叉编译Paddle-OCR

第一步&#xff1a;交叉编译Paddle-Lite 参考链接&#xff1a;https://blog.csdn.net/sz76211822/article/details/130466597?spm1001.2014.3001.5501 第二步&#xff1a;交叉编译opencv4.x 参考链接&#xff1a;https://blog.csdn.net/sz76211822/article/details/13046168…

浅聊AIOT

引言 IoT是(Internet of Things)的简称&#xff0c;也就是人们常说的物联网&#xff1b;随着智能硬件的发展和推广&#xff0c;制造成本也随之下降&#xff0c;很多的厂家也慢慢地拥抱网络互联&#xff0c;逐步实现设备互联&#xff0c;也就进入了人们常说的万物互联时代。虽然…

linux网络统计指令:netstat

这里写自定义目录标题 一 netstat的作用以及安装命令1.1 作用1.2 安装命令 二 基本语法1.1 netstat -a1.2 netstat -e1.3 netstat -anp 三 查看指定端口的使用状况 一 netstat的作用以及安装命令 1.1 作用 主要用于显示IP和TCP、UDP与ICMP相关的统计数据&#xff0c;一般用于…

C++笔记——第十五篇 C++11来了 (上)

目录 1. C11简介 2. 列表初始化 2.1 C98中{}的初始化问题 2.2 内置类型的列表初始化 2.3 自定义类型的列表初始化 1. 标准库支持单个对象的列表初始化 2. 多个对象的列表初始化 3. 变量类型推导 3.1 为什么需要类型推导 3.2 decltype类型推导 3.2.1 为什么需要dec…

微服务全链路追踪选型:Zipkin、Pinpoint、SkyWalking、CAT

基于微服务架构&#xff0c;由于服务拆分粒度比较细&#xff0c;并且服务复用范围增大&#xff0c;不太可能再通过人工登记的方式进行接口调用情况的管理&#xff0c;因此对于每个请求的调用情况追踪将成为不可忽视的问题。追踪请求的调用情况&#xff0c;主要有几个作用&#…

分布式一致性Hash算法原理及实现【负载均衡】

文章目录 一致性Hash原理提高容错性和和扩展性一致性Hash实现思路代码 一致性Hash原理 简单来说&#xff0c;一致性Hash算法将整个哈希值空间组织成一个虚拟的圆环&#xff0c; 如假设某哈希函数 H 的值空间为 0 ~ 2^32-1&#xff08;即哈希值是一个32位无符号整形&#xff09;…