QT QML 练习3

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

代码结构及实现细节

  1. 导入 QtQuick 模块

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

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

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

    qml 复制代码
    Text {
        text: "大风车。。转呀转"
        color: "white"
        x: (root.width - width) / 2
        y: 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 属性来自动调整组件位置,例如:

      qml 复制代码
      anchors.horizontalCenter: parent.horizontalCenter
      anchors.verticalCenter: parent.verticalCenter

      使用 anchors 可以让图片和文本在窗口大小变化时保持正确的位置。

  3. 代码的灵活性和可维护性

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

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

总结

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

c 复制代码
import QtQuick

Rectangle{
id:root
width: 400
height: 500
color: "#4A4A4A"

Image {
    id: image
    source: "./pinwheel"
    x:(root.width-width)/2
    y:(root.height-height)/2
}

Text{
text: "大风车。。转呀转"
color: "white"
x:(root.width-width)/2
y:image.y+image.height+20
}

}

或者写为:

c 复制代码
import QtQuick

Rectangle{
id:root
width: 400
height: 500
color: "#4A4A4A"

Image {
    id: image
    source: "./pinwheel"
    x:(root.width-width)/2
    y:(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
}

}
相关推荐
aherhuo2 分钟前
基于openEuler22.09部署OpenStack Yoga云平台(一)
linux·运维·服务器·openstack
WebDeveloper20015 分钟前
如何使用美国域名中心US Domain Center和WordPress创建商业网站
运维·服务器·css·网络·html
檀越剑指大厂29 分钟前
【Linux系列】Shell 脚本中的条件判断:`[ ]`与`[[ ]]`的比较
linux·运维·服务器
2301_819287123 小时前
ce第六次作业
linux·运维·服务器·网络
武汉联从信息3 小时前
如何使用linux日志管理工具来管理oracle osb服务器日志文件?
linux·运维·服务器
天天进步20153 小时前
STUN服务器实现NAT穿透
运维·服务器
月如琉璃3 小时前
1.gitlab 服务器搭建流程
服务器·gitlab
Kika写代码3 小时前
【微信小程序】页面跳转基础 | 我的咖啡店-综合实训
服务器·微信小程序·小程序
Aileen_0v03 小时前
【AI驱动的数据结构:包装类的艺术与科学】
linux·数据结构·人工智能·笔记·网络协议·tcp/ip·whisper
州周4 小时前
Ftp目录整个下载
linux·服务器·数据库