QML基础——UI布局管理

row column平均分配 Row mainAxisAlignment: MainAxisAlignment.spaceEvenly, //MainAxisAlignment.spaceEvenly平均分配子空间 他会在每个子项之间,之前,之后平均分配空闲空间 当然也可以使用Expanded来实现 mainAxisAlignment: MainAxisAlignment.spaceBetween, //平均分配两端对齐... 阅读详情

Contents

  • 1 概述
  • 2 Row
  • 3 Column
  • 4 Grid
  • 5 混合应用
  • 6 Anchor
  • 7 相关链接

概述

使用Qt做过UI的一定对QHBoxLayout, QVBoxLayout, 和QGridLayout这三个最重要也最常使用的layout managers非常熟悉。那么在QML中又是如何控制和管理UI布局的呢?那么我们这篇文章就为大家介绍这些基础知识。

首先,QML同样允许大家使用硬编码的方式将位置数值直接写到代码中,但是这样做首先难以适应UI的调整,其次代码维护起来也很困难。因此我们不推荐这样做。推荐大家使用的是以下三种布局管理器:Row,、Column、Grid,以及使用Anchor进行布局。

Row

QML 中的 Row 元素会将其子控件都排列在同一行,相互不重叠。我们还可以使用它的spacing 属性来定义子控件之间的距离。比如下列代码就会产生如图所示的效果:

Row {
    spacing: 2
    Rectangle { color: "red"; width: 50; height: 50 }
    Rectangle { color: "green"; width: 20; height: 50 }
    Rectangle { color: "blue"; width: 50; height: 20 }
}


Column

QML 中的 Column元素会将其子控件都排列在同一行,相互不重叠。我们还可以使用它的spacing 属性来定义子控件之间的距离。比如下列代码就会产生如图所示的效果:

Column {
    spacing: 2
    Rectangle { color: "red"; width: 50; height: 50 }
    Rectangle { color: "green"; width: 20; height: 50 }
    Rectangle { color: "blue"; width: 50; height: 20 }
}


Grid

QML 中的 Grid元素会将其子控件都均匀地排列在一个网格内,相互不重叠,每一个子控件都被放置在一个网格单元的(0,0)位置,也就是左上角。Grid的rows 和columns属性定义网格的行数和列数,列数默认是4。我们还可以使用Grid的spacing 属性来定义网格单元之间的距离,这里注意水平和垂直方向的spacing都是一样的。比如下列代码就会产生如图所示的效果:

复制代码
Grid {
    columns: 3
    spacing: 2
    Rectangle { color: "red"; width: 50; height: 50 }
    Rectangle { color: "green"; width: 20; height: 50 }
    Rectangle { color: "blue"; width: 50; height: 20 }
    Rectangle { color: "cyan"; width: 50; height: 50 }
    Rectangle { color: "magenta"; width: 10; height: 10 }
}
复制代码


混合应用

我们还可以将Grid、Row 和 Column 进行混合应用。比如下面的代码会产生如图所示的效果:

复制代码
Column {
    spacing: 2
    Rectangle { color: "red"; width: 50; height: 50 }
    Row {
        spacing: 2
        Rectangle { color: "yellow"; width: 50; height: 50 }
        Rectangle { color: "black"; width: 20; height: 50 }
        Rectangle { color: "blue"; width:50; height: 20 }
    }
    Rectangle { color: "green"; width: 20; height: 50 }
}
复制代码


Anchor

以上方法进行排列是不重叠的,而anchor通俗的说是当前图形相对于某一图形的位置(可重叠)

每一个item 都可以被认为具有 7 条隐藏的“anchor lines":left、 horizontalCenter、 right、 top、 verticalCenter、baseline、以及bottom,如下图所示:

····

其中baseline是指的文本所在的线,在上图中并未标出,如果item没有文字的话baselinw就和top的位置是相同的。
除此之外,Anchor系统还提供了margins 和offsets。margins 是指一个item和外界之间所留有的空间,而offsets 则可以通过使用 center anchor lines来进行布局。如下图所示

·····

使用 QML anchoring系统,我们可以定义不同items之间的anchor lines之间的关系。例如:

Rectangle { id: rect1; ... }
Rectangle { id: rect2; anchors.left: rect1.right; anchors.leftMargin: 5; ... }

·····

我们还可以使用多个anchors:

Rectangle { id: rect1; ... }
Rectangle { id: rect2; anchors.left: rect1.right; anchors.top: rect1.bottom; ... }

·····

通过定义多个水平或垂直的anchors,我们还可以控制item的大小,例如:

Rectangle { id: rect1; x: 0; ... }
Rectangle { id: rect2; anchors.left: rect1.right; anchors.right: rect3.left; ... }
Rectangle { id: rect3; x: 150; ... }

·····

注意:出于效率方面的考虑,我们只允许对一个item的邻居和之接父亲使用anchor定义。比如下面的定义是不合法的:

复制代码
Item {
    id: group1
    Rectangle { id: rect1; ... }
}
Item {
    id: group2
    Rectangle { id: rect2; anchors.left: rect1.right; ... } // invalid anchor!
}
复制代码
使用 QML 进行 UI 设计和开发是 Qt 框架的一个重要特点,而 Text 元素则是其中一个非常重要的 UI 控件。本文将介绍如何使用 QML 中的 Tex... 使用 QML 进行 UI 设计和开发是 Qt 框架的一个重要特点,而 Text 元素则是其中一个非常重要的 UI 控件。除了字体、颜色和文本内容,Text 元素还支持其他许多属性设置,例如字体样式、对齐方式、粗细等。在实际项目中,Text 元素还可以结合其他 UI 控件共同使用,从而实现更加复杂、实用的功能。在这个示例中,我们添加了一个 Text 元素,它的文本内容为 “Hello, World!Text 元素用于在界面上显示文本,其支持多种属性设置,例如字体、颜色、文本内容等。 阅读详情

相关推荐

QML中的网络编程与HTTP请求

Qt提供了一整套强大的网络编程功能,包括用于访问网络资源的类(如和)以及用于实现低级网络协议(如TCP和UDP)的类。Qt网络模块支持跨平台开发,使得在各种平台上创建网络应用程序变得更加轻松。

夏天的狂风的专栏 703

QML “.NET研究”UI布局管理

概述 使用Qt做过UI的一定对QHBoxLayout, QVBoxLayout, 和QGridLayout这三个最重要也最常使用的layout managers非常熟悉。那么在QML中又是如何控制和管理UI布局的呢?那么我们这篇文章就为大家介绍这些基础知识。 首先,QML同样允许大家使用硬编码的方式将位置数值直接写到代码中,但是这样做首先难以适应UI的调整,其次代码维护起来也很困难。因此我们不推荐...

weixin_34119545的博客 248

QML实战项目:掌握QML用户界面设计与开发

QML(Qt Modeling Language)是一种专门用于设计用户界面的声明性语言,它采用了类似于HTML和XML的标记语法,并允许开发者以一种直观的方式描述UI组件及其行为。QML设计的核心理念是简洁和易读性,使得界面设计和编程可以更加分离,从而提高开发效率和可维护性。QML元素是构成用户界面的基础单元。每种QML元素都支持一组特定的属性和方法,通过这些属性和方法,可以定义元素的外观和行为。QML采用声明式编程方式,它允许开发者通过声明性语法来描述用户界面。id: rect。

weixin_29317963的博客 1271

QML可拉伸、可拖拽为独立窗口的UI框架

使用qml实现的可拉伸、可拖拽框架

weixin_42219627的博客 2474

qmlnet:Qml.Net-对.NET的QtQML集成支持

与.NET的Qt / Qml集成 支持的平台/运行时: 运行时间: .NET Framework .NET核心 单核细胞增多症 操作系统 Linux OSX 视窗 第一眼 电梯间距 经过生产验证。 建立了GUI /控制框架,从台式机到嵌入式,已在许多行业中使用。 优秀的社区,提供许多开源控件。 本机渲染,以本机代码完成。 无需昂贵的PInvoke调用即可进行渲染/动画/等。 .NET和Qt之间唯一的互操作是用于驱动GUI的数据模型。 文献资料 在制品: : 入门 dotnet add package Qml.Net dotnet add package Qml.Net.WindowsBinaries dotnet add package Qml.Net.OSXBinaries dotnet add package Qml.Net.LinuxBinaries Linux

基于phpstudy搭建pikachu靶场

一、phpstudy下载安装配置 phpstudy介绍 简单介绍一下phpstudy,详细请参考百度解读。pikachu是基于PHP环境搭建的,需要数据库支持,所以装pikachu之前需要先安装它需要的环境,就像你养鱼需要给它提供水环境一样。安装phpstudy能满足pikachu的需求,所以先安装phpstudy。 phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是

ptxybird的博客 1万+

QML入门必备基础知识之——UI布局管理

QML入门必备基础知识之——UI布局管理 概述 使用 Qt 做过 UI 后一定对 QHBoxLayout, QVBoxLayout, 和 QGridLayout 这三个最重要也最常使用的 layout managers 非常熟悉。那么在 QML 中又是如何控制和管理 UI 布局的呢?那么我们这篇文章就为大家介绍这些基础知识。 首先,QML 同样允许大家

Elastic 中国社区官方博客 2726

手把手教你用闲置安卓手机+蓝鲸支付,零成本搞定个人项目自动收款(附私有化部署教程)

本文详细介绍了如何利用闲置安卓手机和蓝鲸支付系统,零成本搭建个人项目自动收款解决方案。通过私有化部署教程,读者可以学习到从手机选择、系统配置到支付渠道对接的全流程,实现安全、高效的收款系统,特别适合个人开发者和小型项目使用。

weixin_29597551的博客 334

QML 模块解析:从核心模块分类介绍到实际应用的组件与功能说明(之一)

QML 模块解析:从核心模块分类介绍到实际应用的组件与功能说明(之一)

qianniulaoren的博客 1252

LTspice仿真报错Timestep too small?5种实测有效的解决方法(附详细参数配置)

本文针对LTspice仿真中常见的“Timestep too small”报错,提供了5种经过实测有效的解决方案。从理解错误根源入手,详细介绍了调整求解器、仿真参数、优化精度容差、设置初始条件、为理想元件添加寄生参数以及使用高级指令等具体方法,并附有详细的参数配置步骤,帮助工程师快速定位并解决仿真收敛问题,提升电路设计效率。

weixin_29213655的博客 279

【Rcode】生存分析: KM & COX回归& 随机森林& nomogram

本文使用了R——survival包下的lung数据进行方法测试: 1)KM 2) Cox回归:多因素 3)随机森林因子(根据cox回归结果) 4)nomogram ( 根据cox回归结果,建立了中位生存时间,1年5年生存率的概率计算) -------------------????????‍♀️本文只有干货,非常干!????----------------------------- 一、数据加载 #生存分析 library("survival") library("survminer") data("

weixin_43172152的博客 9273

QML学习笔记总结

这个博客是我记录我自学Qt5 的QML语言的时候一些总结和个人理解概述,也是这个专栏的置顶文章,主要的帮助链接基本在这个专栏内部,主要的参考资料就是Qt 官方的帮助文档,这个官方的帮助文档相当详细,总的来说,QML 学习的成本不大,学习入门也很简单,语法也很清晰,QML真的更加快速的描述这个界面相关的构建方法。这个博客也会持续更新,也作为学习阶段性总结的一个监督方式吧。

洪源兄 1万+

手把手教你用Docker快速部署ZLMediaKit流媒体服务器(含WebRTC配置)

本文详细介绍了如何使用Docker快速部署ZLMediaKit流媒体服务器,并配置WebRTC功能。通过容器化部署,实现环境一致性、资源隔离和快速扩展,同时提供WebRTC专项配置、多协议推拉流实战测试及生产环境优化建议,帮助开发者高效搭建企业级流媒体平台。

agile9scrum的博客 202

QML基础布局:锚点布局、行列布局、网格布局与流式布局

在QML中,布局管理是创建响应式、自适应界面的核心技能。 通过合理使用布局管理器,开发者可以避免手动计算控件位置,提升代码可维护性。本文 将结合QML的多种布局方式,从基础到进阶,详解其应用场景与实现技巧。

u011186532的专栏 2276

Maestro 薛定谔软件简单分子对接案例

#参考:Maestro 薛定谔软件使用:Maestro 薛定谔对接:sid=287811。

weixin_42357472的博客 1万+

【ComfyUI】Wan2.2 + IndexTTS 图像数字人或动物口播视频生成

本文介绍了一个基于ComfyUI的数字人口播视频生成工作流,整合了IndexTTS和图像处理技术。该系统通过多模型协同工作,实现从形象图、文本和音频输入到自动生成口播视频的全流程。核心包含WanVideo系列模型,通过CLIP Vision、T5文本编码器和Wav2Vec语音模型分别处理视觉特征、语义理解和口型同步。工作流涵盖素材加载、特征提取、音频处理和视频生成等节点,支持人物、动物等多种主体的口播内容创作。该方案自动化程度高,适用于知识讲解、剧情旁白等多种场景,能帮助创作者高效产出高质量口播视频。

Mr数据杨 2050

QT QML Item基类浅谈

的子项会按Z-order从顶到底处理事件,若上层子项拦截事件,下层无法接收。的核心属性和方法,是掌握QML开发的关键一步——所有复杂的界面组件,最终都是。:深度值(Z-order),数值越大越靠上绘制(解决重叠项的遮挡问题)。:仅处理逻辑(如坐标转换、状态管理),无需显示内容。:作为父项接收事件,分发给子项(如自定义按钮的背景。:定义状态切换时的动画效果(如淡入淡出、滑动)。,它不负责具体渲染,却提供了构建界面所需的。:相对于父项的坐标位置(左上角为原点)。,通过锚定父项/兄弟项的位置实现对齐。

jongden的专栏 1300

【WRF模拟】保存wrf输出文件到指定目录+仅输出指定空间域/变量文件

修改wrf命令以更改指定输出文件目录等

WW、forever的博客 543

Qt 框架知识体系

Qt 是一个跨平台的 C++ 应用程序开发框架,由挪威 Trolltech 公司(现为 The Qt Company)开发。它支持 Windows、Linux、macOS、Android、iOS 等主流平台,广泛应用于桌面软件、嵌入式系统、移动应用等领域。Qt 不仅提供图形用户界面(GUI)开发组件,还涵盖网络、数据库、多线程、多媒体等功能。核心特性跨平台性:通过抽象操作系统接口,实现"一次编写,到处运行"。面向对象。

C/C++ 800

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: __attribute__关键字扩展
下一篇: QML基础——入门教程
獠
獠
博客等级 码龄16年 43粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值