QT QML 练习3

devtools/2024/10/19 20:58:10/

这段代码使用 QtQuick 实现了一个包含图片和文本的简单 GUI 界面。以下是代码的详细介绍及其特点:

代码结构及实现细节

  1. 导入 QtQuick 模块

    import QtQuick
    
    • 引入 QtQuick 模块,用于创建动画、布局以及 GUI 组件。
  2. 根元素 (Rectangle)

    Rectangle {id: rootwidth: 400height: 500color: "#4A4A4A"
    }
    
    • 创建了一个矩形区域,作为整个界面的根容器,命名为 root
    • widthheight 分别设置为 400500 像素。
    • color: "#4A4A4A" 设置背景颜色为深灰色。
  3. 图片元素 (Image)

    Image {id: imagesource: "./pinwheel"x: (root.width - width) / 2y: (root.height - height) / 2
    }
    
    • 创建了一个 Image 元素用于显示图片。
    • source: "./pinwheel" 指定图片的来源,这里指的是 pinwheel 文件。确保文件路径正确,例如是 "./pinwheel.png",这样图片才能被正确加载。
    • xy 属性用于设置图片在窗口中的位置:
      • x: (root.width - width) / 2 使图片水平居中。
      • y: (root.height - height) / 2 使图片垂直居中。
  4. 文本元素 (Text)

    Text {text: "大风车。。转呀转"color: "white"x: (root.width - width) / 2y: image.y + image.height + 20
    }
    
    • 创建了一个 Text 元素用于显示文本 “大风车。。转呀转”。
    • color: "white" 设置文本颜色为白色,使其在深灰色的背景上清晰可见。
    • x 设置文本水平居中,计算方式与图片一致。
    • y: image.y + image.height + 20 设置文本位置在图片下方 20 像素处。

代码的特点

  1. 界面布局

    • 界面布局简单,包含一个图片和一个文本,且使用 Rectangle 作为根容器,所有组件都在根容器内。
    • 使用绝对位置来确保图片和文本水平居中,整体布局看起来比较对称。
  2. 易读性

    • 代码易于理解,各个属性的设置也很直观。
    • xy 计算了相对于容器的居中位置,避免了使用 anchors,适合更精确地控制位置。
  3. UI 风格

    • 界面采用了深灰色背景与白色文本,颜色搭配简单而清晰,强调了文本的可见性。
    • 界面的整体风格非常简洁,视觉元素不多,便于用户理解和使用。

可改进的地方

  1. 图片路径问题

    • 当前代码中的 source: "./pinwheel" 可能不正确,应该确保路径指向有效的图片文件,例如 "./pinwheel.png"
  2. 适配性

    • xy 使用绝对位置来计算居中,这在窗口尺寸变化时需要手动调整。如果希望代码更具适配性,可以考虑使用 anchors 属性来自动调整组件位置,例如:
      anchors.horizontalCenter: parent.horizontalCenter
      anchors.verticalCenter: parent.verticalCenter
      
      使用 anchors 可以让图片和文本在窗口大小变化时保持正确的位置。
  3. 代码的灵活性和可维护性

    • 使用 anchors 相比绝对坐标可以让代码更简洁并且更容易维护,尤其是当界面变复杂时。
    • 如果想要在不同屏幕尺寸下适配,可以通过响应式的方式来调整宽度和高度,比如根据父元素的尺寸来动态调整子元素的大小。
  4. 交互性

    • 当前界面没有交互性,可以考虑添加一些交互,例如点击图片时播放动画,让风车旋转等,来丰富用户体验。

总结

这段代码实现了一个简单的界面,包括一个图片和一个文本。通过使用 Rectangle 作为根容器,确保组件的布局。使用绝对位置使得图片和文本在窗口内居中显示,整体布局比较简单。改进的方向包括优化图片路径、使用 anchors 来更好地适应窗口尺寸变化,以及添加一些用户交互来增加趣味性。
在这里插入图片描述

import QtQuickRectangle{
id:root
width: 400
height: 500
color: "#4A4A4A"Image {id: imagesource: "./pinwheel"x:(root.width-width)/2y:(root.height-height)/2
}Text{
text: "大风车。。转呀转"
color: "white"
x:(root.width-width)/2
y:image.y+image.height+20
}}

或者写为:

import QtQuickRectangle{
id:root
width: 400
height: 500
color: "#4A4A4A"Image {id: imagesource: "./pinwheel"x:(root.width-width)/2y:(root.height-height)/2
}Text{
text: "大风车。。转呀转"
color: "white"
// x:(root.width-width)/2
y:image.y+image.height+20
horizontalAlignment: Text.AlignHCenter
width: root.width
}}

http://www.ppmy.cn/devtools/127100.html

相关文章

原型链+instanceof+Vue底层原理

一些重要的前端知识总结(基于笔面试题的扩展),包含原型链、instanceof、深度剖析Vue底层原理 目录 一、原型链 二、instanceof 1. instanceof 2. 用法 三、defineProperty和Proxy 1. vue架构-MVVM 2. render函数 1)render…

49 | 桥接模式:如何实现支持不同类型和渠道的消息推送系统?

上一篇文章我们学习了第一种结构型模式:代理模式。它在不改变原始类(或者叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。代理模式在平时的开发经常被用到,常用在业务系统中开发一些非功能性需求&#xf…

vue $nextTick 实现原理

nextTick的实现 一:nextTick介绍二:手写nextTick三:具体代码四:实现细节 一:nextTick介绍 nextTick 是 Vue.js 框架中的一个方法,它允许延迟执行一个函数,直到 DOM 更新完成。当你修改了数据并…

docker使用基础

查看系统yum源中是否含有docker包 ls -l /etc/yum.repos.d/docker-ce.repo 将docker加入开机自启动 systemctl enable docker.service 下载nginx仓库,但是报错,原因为解析不了仓库源地址需要更换仓库源 更换仓库源命令,进入目录/etc/docker…

bean的实例化2024年10月17日

跟不上为基础 1.你的java学习路线 2. 3.课程 注解的装配 contoller调用service用的是注解装配

MySQL 中utfmb3和utfmb4字符集区别

目录 一:utf-8二:utf8mb3三:uft8mb4 一:utf-8 unicode 定义了一套规范来存储各种字符,但是它没有定义这些字符在计算机中应该如何存储。所以基于这种原因,后续基于 Unicode 字符集发展出了多种字符的存储规…

【VUE】为什么要避免v-for和v-if在一起使用

Vue 处理指令时,v-for 比 v-if 具有更高的优先级, 虽然用起来也没报错好使, 但是性能不高, 如果你有5个元素被v-for循环, v-if也会分别执行5次。 在Vue.js中,将v-for和v-if一起使用会对性能产生负面影响,因此最好避免这样的用法。 当v-for和…

网络通信与并发编程(二)基于tcp的套接字、基于udp的套接字、粘包现象

基于tcp的套接字 文章目录 基于tcp的套接字一、套接字的工作流程二、基于tcp的套接字通信三、基于udp的套接字通信四、粘包现象 一、套接字的工作流程 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个…