【QT-QML】6.定位元素

Qt qml详细介绍 阅读详情

1. 定位元素

有许多 QML 元素用于定位子项。这些元素被称为定位器,Qt Quick 模块提供了以下几种: Row 、 Column 、 Grid 和 Flow 。在下图中,可以看到它们展示相同内容的效果。
在深入细节之前,让我先介绍一些辅助元素:红色、蓝色、绿色、浅色和深色方块。每个组件都包含一个 48x48 像素的有色矩形。作为参考,以下是 RedSquare 的源代码:

// RedSquare.qml

import QtQuick

Rectangle {
    width: 48
    height: 48
    color: "#ea7025"
    border.color: Qt.lighter(color)
}

请注意,这里使用了 Qt.lighter(color),以便根据填充颜色生成更浅的边框颜色。在接下来的示例中,我们将使用这些辅助组件,使源代码更加紧凑且易于阅读。请记住,每个矩形的初始大小均为 48x48 像素。

1.1 Column 元素

Column 元素通过将子项垂直堆叠,将它们排列成一列。spacing 属性可用于设置各子元素之间的间距。
在这里插入图片描述

// ColumnExample.qml

import QtQuick

DarkSquare {
    id: root
    width: 120
    height: 240

    Column {
        id: column
        anchors.centerIn: parent
        spacing: 8
        RedSquare { }
        GreenSquare { width: 96 }
        BlueSquare { }
    }
}

1.2 Row 元素

Row 元素将子项并排排列,根据 layoutDirection 属性的不同,可以从左向右或从右向左排列。同样,spacing 用于分隔子项。
在这里插入图片描述

// RowExample.qml

import QtQuick

BrightSquare {
    id: root
    width: 400; height: 120

    Row {
        id: row
        anchors.centerIn: parent
        spacing: 20
        BlueSquare { }
        GreenSquare { }
        RedSquare { }
    }
}

layoutDirection属性包括Qt.LeftToRight(默认)和Qt.RightToLeft,可以控制元素从左往右排还是从右往左排。

1.3 Grid元素

Grid 元素将子项排列在网格中。通过设置 rows 和 columns 属性,可以限制行数或列数。如果不设置其中任何一个,则会根据子项数量计算出另一个属性的值。例如,将行数设置为 3 并添加 6 个子项,将生成 2 列。属性 flow 和 layoutDirection 用于控制项目添加到网格中的顺序,而 spacing 则控制子项之间的间距。
在这里插入图片描述

// GridExample.qml

import QtQuick

BrightSquare {
    id: root
    width: 160
    height: 160

    Grid {
        id: grid
        rows: 2
        columns: 2
        anchors.centerIn: parent
        spacing: 8
        RedSquare { }
        RedSquare { }
        RedSquare { }
        RedSquare { }
    }

}

flow 属性包括Grid.LeftToRight(默认)和Grid.TopToBottom,可以控制元素从左往右排还是从上往下排。

1.4 Flow元素

最后一个定位器是Flow 。它以流式布局添加子项。流的方向由 flow 和 layoutDirection 控制。它可以横向排列,也可以从上到下排列。它还可以从左到右或反方向排列。随着子项被添加到流中,它们会根据需要换行或换列。为了使流式布局正常工作,必须为其指定宽度或高度。这可以直接设置,也可以通过锚点布局(anchor layouts)来设置。
在这里插入图片描述

// FlowExample.qml

import QtQuick

BrightSquare {
    id: root
    width: 160
    height: 160

    Flow {
        anchors.fill: parent
        anchors.margins: 20
        spacing: 20
        RedSquare { }
        BlueSquare { }
        GreenSquare { }
    }
}

flow属性包括Flow.LeftToRight(默认)和Flow.TopToBottom,控制元素从左往右排列,从上往下排列。

Flow和Grid的主要区别是Flow是流式的,行列数可变,Grid是定死的几行几列。

通常与定位器配合使用的元素是 Repeater 。它的工作原理类似于 for 循环,并对模型进行迭代。在最简单的情况下,模型仅是一个提供循环次数的数值。
在这里插入图片描述

// RepeaterExample.qml

import QtQuick

DarkSquare {
    id: root
    width: 252
    height: 252
    property variant colorArray: ["#00bde3", "#67c111", "#ea7025"]

    Grid{
        anchors.fill: parent
        anchors.margins: 8
        spacing: 4
        Repeater {
            model: 16
            delegate: Rectangle {
                required property int index
                property int colorIndex: Math.floor(Math.random()*3)

                width: 56; height: 56
                color: root.colorArray[colorIndex]
                border.color: Qt.lighter(color)

                Text {
                    anchors.centerIn: parent
                    color: "#f0f0f0"
                    text: "Cell " + parent.index
                }
            }
        }
    }
}

在这个重复器(repeater)示例中,我们使用了一些新的技巧。我们定义了自己的 colorArray 属性,它是一个颜色数组。重复器会创建一系列矩形(根据模型定义为 16 个)。在每次循环中,它都会根据重复器的子项定义来创建矩形。在矩形中,我们通过使用 JS 数学函数 Math.floor(Math.random()*3) 来选择颜色。这会产生一个 0 到 2 范围内的随机数,我们用它从颜色数组中选择颜色。如前所述,JavaScript 是 Qt Quick 的核心部分,因此我们可以使用其标准库。

重复器会将 index 属性注入到子项中。它包含当前的循环索引(0, 1, …15)。我们可以利用它根据索引做出决策,或者在我们的示例中,使用 Text 元素来可视化当前索引。

虽然 index 属性是动态注入到 Rectangle 中的,但将其声明为必需属性(required property)是一个良好的实践,这可以提高代码的可读性并辅助开发工具。这是通过 required property int index 这一行实现的。

QT编程之QML入门 Qt Quick是一个用于构建现代、高效、可扩展用户界面的框架。它是Qt开发框架的一部分,旨在通过声明性语法和JavaScript绑定来简化用户界面的设计和实现。Qt Quick基于语言,这是一种类似于JSON的声明性语言,用于描述用户界面的结构和行为。使用QML,您可以使用易于理解和编写的代码来创建用户界面,并通过使用属性绑定和信号槽机制来实现交互逻辑。模板/布局核心组件适用场景交互特性‌Empty‌Window完全自定义界面无预设交互逻辑‌Scroll‌ScrollView。 阅读详情

相关推荐

QML学习笔记

QML是与HTML类似的一种标记语言。QML文件采用.qml作为文件格式后缀。作为一种标记语言(类似HTML)一个QML文档有且只有一个根元素。示例:在这个例子中使用Image元素作为根元素,这个元素的宽度、高度与"images/background.png"图像相同。QML中不限制根元素类型,在上面这段代码中我们设置了Image元素的source属性作为我们的背景图像,它也是我们的根元素。

fangqi20170515的博客 2493

Qt6 QML Book/Quick入门/定位器元素类型

Positioning Elements 定位器元素类型 There are a number of QML elements used to position items. These are called positioners, of which the Qt Quick module provides the following:Row,Column,GridandFlow. They can be seen showing the same contents in the illus...

aggs1990的专栏 740

Qt 学习之路 2(81):QML元素布局

上一章我们介绍了 QML 中用于定位的几种元素,被称为定位器。除了定位器,QML 还提供了另外一种用于布局的机制。我们将这种机制成为锚点(anchor)。锚点允许我们灵活地设置两个元素的相对位置。它使两个元素之间形成一种类似于锚的关系,也就是两个元素之间形成一个固定点。锚点的行为类似于一种链接,它要比单纯地计算坐标改变更强。由于锚点描述的是相对位置,所以在使用锚点时,我们必须指定两个元素,声明其中

有志者事竟成 570

qml定位器:Row、Column、Grid、Flow

【代码】qml定位器:Row、Column、Grid、Flow。

遇己 517

【Qt6 QML Book 基础】06:QML 定位元素

本文全面解析 QML 布局系统,涵盖 Column/Row 基础布局、Grid/Flow 结构化布局、Repeater 动态生成等核心功能。通过实战代码演示垂直排列、网格划分、流式换行等典型场景,结合自定义组件封装与参数化设计最佳实践,帮助开发者掌握规范化布局开发流程。配套完整可运行工程,包含 10 种布局示例,适合 QML 初学者及进阶开发者系统学习界面布局技术。

binary0010的博客 951

【Qt6 QML Book 基础】03:核心元素(附完整可运行工程代码)

在 Qt6 QML 开发中,RectangleTextImage等核心视觉元素是构建高性能界面的基础。继前两篇《可交互旋转风车动画》《QML 语法基础》之后,本文结合官方教程,通过完整可运行工程示例与逐行中文注释,系统解析视觉元素的样式控制、布局逻辑与交互实现,帮助开发者夯实 QML 界面开发基础。

binary0010的博客 852

【QT教程】QT6_QML测试与调试技巧 QT QML性能优化

QT6_QML简介QT6 QML简介QT6 QML是QT框架的下一代,它是一个强大的跨平台C++库,用于开发高性能的图形用户界面(GUI)应用程序。QT6 QML是QT6版本中的一部分,它提供了一种声明性语言,用于构建用户界面和应用程序。QML是一种基于JavaScript的轻量级语言,它允许开发人员以简洁、易于理解的方式描述用户界面的外观和行为。QT6 QML的特点QT6 QML具有以下特点,

QT性能优化QT原理源码QT界面美化 2711

VSCode+PlatformIO新建工程卡成狗?3步提速大法实测有效(附镜像源配置)

针对VSCode+PlatformIO新建工程时因依赖下载缓慢导致的加载慢问题,本文提供了三步核心提速方案。通过配置Python环境变量、修改PlatformIO插件设置以使用国内镜像源,并优化pip配置文件,实测可大幅缩短工程创建时间,有效解决创建工程卡顿的痛点。

delta的博客 712

第二章:组件、变换、布局、提高启动速度

组件就是基本元素的组合。比如按钮,用Text ,Image,MouseAread 实现一个按钮。主要有Row ,Column , Grid。TODO 后续贴上链接代码。这里主要就是矩阵变换了。TODO 后续展开了讲。

Black_Silencer的博客 521

从Microchip SDK到STM32实战:手把手教你移植LAN9252 EtherCAT从站驱动(含EEPROM配置避坑)

本文详细介绍了如何将Microchip SDK中的LAN9252 EtherCAT从站驱动移植到STM32F407平台,包括FSMC接口配置、中断处理适配和EEPROM配置等关键步骤。通过实战指南和避坑技巧,帮助开发者快速实现高性能EtherCAT从站设备的开发,适用于工业自动化领域。

weixin_29197835的博客 446

2026华为OD机试(C++)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,C++实现。

MISAYAONE的博客 20万+

【QT教程】QT6 QML编程

QT6概述QT6概述QT6是Qt Company发布的最新版本的Qt框架,这是一个跨平台的C++图形用户界面应用程序开发框架。Qt框架广泛应用于开发具有原生性能的应用程序,支持多种操作系统,如Windows、Mac OS、Linux、iOS和Android等。QT6带来了许多新特性和改进,使得开发者能够更加高效地开发高质量的应用程序。QT6的主要特性QT6的主要特性可以总结为以下几点,全新的Qt Quick Compiler。

QT性能优化QT原理源码QT界面美化 2860

文末含资料链接和视频讲解!YOLOv8+RepVGG+QueryDet小目标检测终极指南:从理论到实战,突破遥感图像检测难题

QueryDet(Query Detection)机制代表了目标检测领域的一个重要范式转变。传统的目标检测方法基于anchor或anchor-free的密集预测,需要为图像中的每个可能位置生成预测。而QueryDet采用了稀疏查询的方式,通过少量的可学习查询向量来直接预测目标。 这种设计灵感来源于Transformer架构中的注意力机制。在自然语言处理中,Transformer通过query-key-value机制实现了高效的序列建模。QueryDet将这一思想引入到目标检测中,将检测问题转化为查询匹配问

FJN110的博客 387

Qt6 QML Book目录(翻译)

一本关于Qt6的书

aggs1990的专栏 4001

python实现下载和离线安装包环境

导出当前电脑python安装的所有包列表requirement.txt。

m0_60352504的博客 1676

淘系商品的成长密码:历史与趋势透视

本文分析了淘系商品的发展历程,从早期的市场探索到如今的行业领先地位,深入探讨了技术创新、供应链优化、用户需求洞察等关键因素在淘系商品成功中的作用。通过对平台不断完善商品生态、提升购物体验和服务的过程分析,文章总结了淘系商品在竞争激烈的市场中如何通过创新应对挑战并推动电商行业的进步。未来,随着消费趋势变化和新兴模式的兴起,淘系商品将在更大范围内发挥其市场影响力。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

【Qt】QML快速入门5——定位元素

定位元素(Positioning ELement) 有一些QML元素被用于放置元素对象,它们被称作定位器,QtQuick模块提供了Row,Column,Grid,Flow用来作为定位器。你可以在下面的插图中看到它们使用相同内容的显示效果。 注意:在我们详细介绍前,我们先介绍一些相关的元素,红色(red),蓝色(blue),绿色(green),高亮(lighter)与黑暗(darker)方块,每一个组件都包含了一个48乘48的着色区域。下面是关于RedSquare(红色方块)的代码: // RedSquare

See_Star的博客 1219

【软考高级系统架构论文】论微服务架构及其应用

本文围绕“论微服务架构及其应用”展开论述。首先概要介绍了本人参与的某公司线上电子商务平台项目,在其中担任系统架构设计师。接着分析了微服务架构相较于单块架构的特点,如模块化与组件化、技术栈多样性、独立部署与扩展、高度容错与可用性等。最后结合项目阐述了软件架构对微服务模式的采用情况,以及实施过程中遇到的问题及解决方案,如服务划分粒度、数据一致性、监控与故障排查等问题,并给出了相应解决办法。

qq837993702的博客 225

Qt qml调试,qml性能分析和优化工具

QML语言为qt推出的用于界面编程的语言。 1)如何在qt creator中进行调试qml: 以Qt Creator 4.6.2为例: 在qt creator的debug模式下,可以直接在qml中打断点。按照下图的方式,在debug模式下,设置Project的build选项, 点击Build steps中的details进行详细设置,勾选Enable QML debugging and...

Peace 9322

22、光无线通信调制技术详解

本文详细介绍了光无线通信中的多种调制技术,包括开关键控(OOK)、脉冲位置调制(PPM)、数字脉冲间隔调制(DPIM)、副载波强度调制(SCM)、相移键控(PSK)、正交幅度调制(QAM)以及多载波调制(MCM)如OFDM和MSIM。文章分析了各类调制技术在带宽需求、功率效率、传输容量、传输速率和PAPR等方面的性能差异,并通过Matlab仿真展示了其在AWGN信道下的误码率表现。同时,对比了不同技术的适用场景,提出了调制选择流程,并结合室内光通信与自由空间光通信的应用案例,展望了未来调制技术向高频谱效率、

net55的博客 116

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【QT教程】QT6 QML在虚拟现实中的应用

它通常在特定的场地内设置,利用多种传感器和定位技术,如GPS、室内定位等,根据用户在现实世界中的位置和移动来驱动虚拟世界中的体验。在接下来的章节中,我们将深入探讨如何具体实现这些应用,包括虚拟艺术画廊、虚拟艺术创作、虚拟游戏、虚拟旅游以及虚拟社交等,帮助读者掌握使用QT6 QML开发虚拟现实应用的技巧。作为软件开发行业领域的一个QT技术培训专家,我们需要关注虚拟现实技术的发展趋势,掌握相关技术,以便在未来市场中抓住机遇,发挥QT6 QML在虚拟现实应用开发中的优势。

QT性能优化QT原理源码QT界面美化 1944

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【QT教程】QT6 QML在增强现实中的应用

在软件开发领域,Qt6 QML(Qt Quick Markup Language)是Qt6框架的一部分,用于构建用户界面,提供了一种声明式的编程语言,让开发者能够以更简洁、高效的方式创建现代化的应用程序界面。QT6 QML凭借其创新的技术特点,如强大的用户界面设计能力、优异的实时性能、跨平台的兼容性以及开放的生态系统,正在成为增强现实艺术创作的未来趋势。我们将展示如何使用QT6的增强现实技术来创建立体的、可交互的艺术作品,以及如何使用QT6的实时渲染技术来为艺术作品添加动态的、逼真的效果。

QT性能优化QT原理源码QT界面美化 1173

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【QT教程】QT6 QML界面布局艺术

QT6 QML界面布局艺术 使用AI技术辅助生成QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C++扩展开发视频课程免费QT视频课程 您可以看免费1000+个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看 免费QT视频课程 QT界面美化视频免费看QT6_QML布局容器概述 QT6 QML布局容器概述 QT6 QML是Qt框架的最新版本,它提供了一套丰富的布局容器,用于在用户界面中排列和定位元素。这些布局容

QT性能优化QT原理源码QT界面美化 2950

QT之QML布局相关总结

QT之QML布局总结

hsy12342611的专栏 2876

【Qt】QML快速入门1——语法

一、QML语法(QML Syntax) QML是一种描述用户界面的声明式语言。它将用户界面分解成一些更小的元素,这些元素能够结合成一个组件。 QML语言描述了用户界面元素的形状和行为。用户界面能够使用JavaScript来提供修饰,或者增加更加复杂的逻辑。从这个角度来看它遵循HTML-JavaScript模式,但QML是被设计用来描述用户界面的,而不是文本文档。 从QML元素的层次结构来理解是最简单的学习方式。子元素从父元素上继承了坐标系统,它的x,y坐标总是相对应于它的父元素坐标系统。 让我们开始用一个简

See_Star的博客 3828
上一篇: 【QT-QML】5. 简单变换
下一篇: [QT-QML] 7. 布局项目
SilentSlot
博客等级 码龄16年 44粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值