Qt6 Qt Quick UI原型学习QML第五篇

news2024/11/28 14:36:35

文章目录

  • 效果
  • QML语法父文件 MyQML.qml
  • QML语法子文件 TLineEditV1.qml
  • QML语法子文件 TTextEdit.qml


效果

在这里插入图片描述
在这里插入图片描述

QML语法父文件 MyQML.qml

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12


Window {
    id: window
    visible: true
    width: 600
    height: 600
    title: qsTr("QML study")

  Rectangle {
      id:rect
      width:300
      height: 300
      color: "gray"

      // TextInput允许用户输入一行文本。元素支持输入约束,例如validator, inputMask,以及echoMode.
      TextInput {
              id: input1
              x: 8; y: 8
              width: 96; height: 20
              text: "Text Input 1"
              color: "red"
          }

          TextInput {
              id: input2
              x: 8; y: 36
              width: 96; height: 20
              text: "Text Input 2"
              color: "red"
             // focus: true   // 光标闪动
          }

          // 用户可以在一个TextInput来改变焦点。为了支持通过键盘切换焦点,我们可以使用KeyNavigation
          // 3和4可以通过键盘tab键来回切换
          TextInput {
                  id: input3
                  x: 8; y: 66
                  width: 96; height: 20
                  text: "Text Input 3"
                  color: "blue"
                  KeyNavigation.tab: input4
              }

              TextInput {
                  id: input4
                  x: 8; y: 86
                  width: 96; height: 20
                  text: "Text Input 4"
                  color: "blue"
                  KeyNavigation.tab:input3
              }

         // 尝试使用tab键进行导航。你将体验到焦点并没有改变
         // 为了防止这种情况,QML提供了FocusScope
        Rectangle {
            color: "blue"
            width:300
            height: 120
            anchors.bottom: rect.bottom

            TLineEditV1  {
                id:put1
                anchors.verticalCenter:  parent.verticalCenter
                width: parent.width - 10
                border.color: "#ff0000"
            }

            TLineEditV1  {
                id:put2
                anchors.verticalCenter:  parent.verticalCenter
                anchors.verticalCenterOffset: +40
                width: parent.width - 10
                border.color: "#ff0000"
            }
        }
  }

  // 文本编辑
  Rectangle {
      id:rect1
      width: 136
      height: 120
      color: "blue"
      x:rect.width + rect.x

      TTextEdit {
          id:input
          x:8; y:8
          width: rect1; height: 104
          focus: true
          text: "Text Edit"
      }
  }

  // 第三部分 Keys元素 屏蔽以上生效 焦点没有定位到当前元素
  // 文本编辑
  Rectangle {
      id:rect3
      width: 300
      height: 300
      color: "black"
      y:rect.height + rect.y + 10

     Rectangle {
         id:spuare
         x:8; y:8
         color: "green"
         width: 50; height: 50
     }

     // 键盘焦点
     focus: true
     Keys.onLeftPressed: spuare.x -= 8
     Keys.onRightPressed: spuare.x += 8
     Keys.onUpPressed: spuare.y -= 8
     Keys.onDownPressed: spuare.y += 8

     // + - 放大和缩小
     Keys.onPressed: function (event) {
         switch(event.key) {
         case Qt.Key_Plus:      // shift +  放大
             spuare.scale += 0.2
             break;
         case Qt.Key_Minus:  // shift -  缩小
             spuare.scale -= 0.2
             break;
         }
     }
  }
}

这段代码是一个使用QtQuick和QML编写的简单界面示例。它包含了几个元素,如窗口、矩形、文本输入框和按键响应等。

首先,在代码开头我们导入了几个QtQuick相关的模块。

接下来,定义了一个窗口(Window)元素,设置了它的一些属性,如可见性、宽度、高度和标题等。

窗口内部有一个矩形(Rectangle)元素,设置了它的宽度、高度和颜色。

在矩形内部有几个文本输入框(TextInput)元素,每个文本输入框设置了位置、宽度、高度、默认文本和颜色等属性。其中,输入框input1和input2没有指定键盘焦点,而输入框input3和input4之间设置了键盘焦点切换Tab键的功能。

在矩形下方,还有一个更大的矩形容器,它的颜色为蓝色,用于演示焦点范围(FocusScope)的应用。这个容器内部又包含了两个自定义的文本输入框(TLineEditV1元素),类似于上面的输入框,但使用了不同的样式设置。

矩形的右侧是另一个矩形(rect1),用于展示文本编辑器(TTextEdit)的使用。这个编辑器设置了位置、宽度、高度、默认文本和焦点等属性。

最后,是一个按键响应(Keys)元素。它包含了一些按键事件处理函数,如左、右、上、下方向键表示移动一个矩形(spuare)的位置,加号(+)和减号(-)表示缩放矩形的大小。

总的来说,这段代码演示了在QML中如何创建窗口、矩形、文本输入框和按键响应的基本用法。


QML语法子文件 TLineEditV1.qml

import QtQuick 2.0


Rectangle {
    width: 96; height: input.height + 20
    color: "lightsteelblue"
    border.color: "gray"

    // 如果您想导出TextInput完全可以通过使用property alias input: input。第一input是属性名,其中第二个输入是元素id。
    /* 在这段代码中,`property alias`用于创建一个别名属性,使得可以通过该别名来访问其他元素的属性。

    1. `text: input.text`:创建了一个别名属性`text`,它与`input`元素的`text`属性相同。这意味着可以通过`text`属性直接访问`input`元素的`text`属性。
    例如,`window.text`将等同于`window.input.text`。
    2. `input: input`:创建了一个别名属性`input`,它与`input`元素相同。这意味着可以通过`input`属性直接访问`input`元素本身。
    例如,`window.input`将等同于`input`元素本身。

    通过使用`property alias`,可以方便地在代码中访问其他元素的属性和对象,简化了代码的书写和阅读。*/
    property alias text: input.text
    property alias input: input

    TextInput {
        id: input
        anchors.fill: parent
        anchors.margins: 4
        focus: true
        text: "请输入..."
    }
}

该代码段的目的是创建一个矩形框和一个文本输入框,并使用别名属性来简化对文本输入框属性的访问。

首先,通过import QtQuick 2.0语句导入了QtQuick模块。

代码中的主体是一个矩形(Rectangle)元素,设置了它的宽度、高度、颜色和边框颜色等属性。

接下来使用了property alias语法来创建别名属性。其中包含了两个别名属性:

  1. text: input.text:这条语句创建了一个别名属性text,使得可以通过text属性直接访问input元素的text属性。例如,window.text将等同于window.input.text

  2. input: input:这条语句创建了一个别名属性input,使得可以通过input属性直接访问input元素本身。例如,window.input将等同于input元素本身。

通过使用property alias语法,可以方便地在代码中访问其他元素的属性和对象,简化了代码的书写和阅读。

在矩形元素的内部,定义了一个文本输入框(TextInput),设置了它的id、填充锚点、边距、焦点和默认的提示文本等属性。

总的来说,该代码段实现了一个带有别名属性的矩形和文本输入框,使得可以更方便地访问和操作文本输入框的属性。


QML语法子文件 TTextEdit.qml

import QtQuick 2.0

FocusScope {
    width: 96; height: 96
    Rectangle {
        anchors.fill: parent
        color: "red"
        border.color: "black"
        border.width: 5
    }

    property alias text: input.text
    property alias input: input

    TextEdit {
        id: input
        anchors.fill: parent
        anchors.margins: 4
        color: "white"
        focus: true
    }
}

代码中的每句语法的解释如下:

  1. import QtQuick 2.0:导入QtQuick 2.0模块,这是使用Qt Quick构建用户界面的模块。这里将其导入到当前QML文件中。

  2. FocusScope:创建了一个焦点范围元素。焦点范围用于管理和控制在其中的元素之间的焦点顺序。

  3. width: 96; height: 96:设置FocusScope元素的宽度和高度为96。

  4. Rectangle:创建了一个矩形元素。

  5. anchors.fill: parent:将该矩形元素的边缘与父元素(即FocusScope)的边缘对齐,使得它的大小与父元素相同。

  6. color: "red":设置矩形元素的颜色为红色。

  7. border.color: "black":设置矩形元素的边框颜色为黑色。

  8. border.width: 5:设置矩形元素的边框宽度为5。

  9. property alias text: input.text:创建一个别名属性text,使得可以通过text属性直接访问input元素的text属性,简化了代码的书写和阅读。

  10. property alias input: input:创建一个别名属性input,使得可以通过input属性直接访问input元素本身,简化了代码的书写和阅读。

  11. TextEdit:创建了一个文本编辑器元素。

  12. id: input:给该文本编辑器元素设置了一个id,方便在其他地方引用。

  13. anchors.fill: parent:将该文本编辑器元素的边缘与父元素(即矩形)的边缘对齐,使得它的大小与父元素相同。

  14. anchors.margins: 4:设置文本编辑器元素与父元素的边缘间隔为4,即在父元素之内留有一定的空隙。

  15. color: "white":设置文本编辑器元素的文字颜色为白色。

  16. focus: true:设置文本编辑器元素的焦点为true,即默认情况下获得焦点。

总体来说,该代码段创建了一个带有焦点范围的元素,其内部包含一个带有别名属性的矩形和一个文本编辑器。这样可以方便地通过别名属性访问和操纵文本编辑器的属性,同时实现了焦点的管理和控制。


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

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

相关文章

【043】解密C++ STL:深入理解并使用 list 容器

解密C STL:深入理解并使用list容器 引言一、list 容器概述二、list容器常用的API2.1、构造函数2.2、数据元素插入和删除操作2.3、大小操作2.4、赋值操作2.5、数据的存取2.6、list容器的反转和排序 三、使用示例总结 引言 💡 作者简介:一个热爱…

详细解析python视频选择--【思维导图知识范围】

C ,JAVA JAVAWEB ,微信小程序等 都有视频选择的分析。 语言视频选择收录专辑链接C张雪峰推荐选择了计算机专业之后-在大学期间卷起来-【大学生活篇】JAVA黑马B站视频JAVA部分的知识范围、学习步骤详解JAVAWEB黑马B站视频JAVAWEB部分的知识范围、学习步骤详解SpringBootSpringB…

Linux QT通过NFS挂载到Linux开发板上

Linux QT通过NFS挂载到Linux开发板上 说明:这里使用的Linux开发板是正点原子的阿尔法开发板 创建NFS 环境 NFS简介 网络文件系统,英文 Network File System(NFS),是由 SUN 公司研制的 UNIX 表示层协议 (presentation layer protocol)&…

机器学习术语解析与应用(二)

文章目录 🍀目标函数(Objective Function)🍀GPU加速(GPU Acceleration)🍀迁移学习(Transfer Learning)🍀自然语言处理(Natural Language Processi…

opencv 之 外接多边形(矩形、圆、三角形、椭圆、多边形)使用详解

opencv 之 外接多边形(矩形、圆、三角形、椭圆、多边形)使用详解 本文主要讲述opencv中的外接多边形的使用: 多边形近似外接矩形、最小外接矩形最小外接圆外接三角形椭圆拟合凸包 将重点讲述最小外接矩形的使用 1. API介绍 #多边形近似 v…

EasyUI Datagrid 应用

两种为 datagrid 赋值表格 number 1 <div class"easyui-layout" data-options"fit:true"><div data-options"region:center"><table id"storeTable" class"easyui-datagrid" style"width:100%;height:…

STM32(HAL库)驱动(2.0寸)TFT-LCD彩屏(240*320)

目录 1、简介 2、CubeMX初始化配置 2.1 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 屏幕引脚配置 2.3 项目生成 3、KEIL端程序整合 3.1 LCD驱动添加 3.2 函数修改 3.2.1 lcd.h修改 3.2.2 lcd_innit.h 修改 3.2.3 lcd.c修改 3.2.4 lcd_inut.c修改 3.3 主函数代码 3.3…

重新思考半监督医学图像分割:方差减少的视角

文章目录 Rethinking Semi-Supervised Medical Image Segmentation: A Variance-Reduction Perspective摘要本文方法实验结果 Rethinking Semi-Supervised Medical Image Segmentation: A Variance-Reduction Perspective 摘要 在医学图像分割中&#xff0c;对比学习是通过对…

Flink简介及部署模式

文章目录 1、Flink简介2、Flink部署2.1 本地模式2.1 Standalone模式部署2.2 Standalone模式下的高可用2.3 Yarn模式Yarn模式的高可用配置&#xff1a;yarn模式中三种子模式的区别&#xff1a; 3、并行度4、提交命令执行指定任务Application Mode VS yarn per-job 5、注意事项5、…

1 请使用js、css、html技术实现以下页面,表格内容根据查询条件动态变化。

1.1 创建css文件&#xff0c;用于编辑style 注意&#xff1a; 1.背景颜色用ppt的取色器来获取&#xff1a; 先点击ppt的形状轮廓&#xff0c;然后点击取色器&#xff0c;吸颜色&#xff0c;然后再点击形状轮廓的其他轮廓颜色&#xff0c;即可获取到对应颜色。 2.表格间的灰色线…

二,创建支付微服务提供者 第二章

<dependencies><!--web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--监控--><dependency><groupId>org.springframewor…

微信小程序瀑布流组件

1.创建文件夹 /components/waterfall/ 文件夹结构如图 各文件内容&#xff1a; .wxml<view class"waterfallView"><view wx:for"{{resultData}}" wx:for-item"i" wx:for-index"iIndex" wx:key"iIndex" class&…

Idea 设置类和方法的注释(获取参数)

Idea 添加注释&#xff1a;类注释、方法注释 类注释 方法注释 类注释 File–Setting–Editor–File and Code Templates–Class: 注释模板&#xff1a; /** **description: *author: fqtang*time: ${DATE} ${TIME}* */ 操作截图&#xff1a; 效果&#xff1a; 方法注释 为了…

06.计算机网络——IP协议

文章目录 网络层IP协议基本概念协议头格式如何解包如何交付网段划分子网掩码特殊的IP地址IP地址的数量限制私有IP地址和公网IP地址路由 网络层 IP协议 IP协议提供一种将数据从A主机送达到B主机的能力&#xff0c;进行网络层的通信。 ​ IP协议 基本概念 主机 —— 配有IP地址…

HTML Audio对象属性、方法、事件及音乐播放器应用

分为两部分&#xff0c;前面主要介绍Html5为Audio对象提供了用于DOM操作的方法、属性和事件&#xff1b; 后面主要通过使用audio jquery bootstrap在浏览器底部实现的音乐播放器。 效果&#xff1a; 目录 Audio对象 常用方法 常用属性 常用事件 音乐播放器 Html页面 样式…

C进阶:内存操作函数

内存操作函数 memcpy 头文件&#xff1a;string.h 基本用途&#xff1a;进行不相关&#xff08;不重叠的内存&#xff09;拷贝。 函数原型&#xff1a;void* memcpy(void* destination,//指向目标数据的指针 const void* source,//指向被拷贝数据的指针 size_t num);//拷贝的数…

ES6解构对象、数组、函数传参

目录 1.对象解构 2.对象解构的细节处理 2.1.解构的值对象中不存在时 2.2.给予解构值默认参数 2.3.非同名属性解构 3.数组解构 3.1基础解构语法 3.2数组嵌套解构 4.函数解构传参 5.解构小练习 在ES6的新语法中新增了解构的方法&#xff0c;它可以让我们很方便的从数组或…

如何实现两个对象之间的属性拷贝

两个对象之间的属性拷贝 你可以使用Java的BeanUtils类或类似工具来实现两个对象之间的属性拷贝。以下是一个示例代码&#xff1a; import org.apache.commons.beanutils.BeanUtils;public class CopyPropertiesExample {public static void main(String[] args) throws Excep…

java学习路程之篇一、进阶知识、面向对象高级、static关键字、继承、final关键字、this、super

文章目录 面向对象高级static关键字继承final关键字 面向对象高级 static关键字 继承 final关键字

【统计课堂】SPSS统计分析- R×C列联表资料统计方法的选择

之前我们提到RC列联表资料&#xff0c;列联表根据变量是否有序可以分为双向无序、单项有序、双向有序列联表&#xff0c;他们的统计方法是不同的 一、双向无序列联表 双向无序列联表是指行、列变量均为无序的列联表&#xff0c;比如不同污染地区的动物畸形率是否有差异&#x…