Qt应用开发(Quick篇)——布局类与布局模块

一、前言

       实际 应用中,布局是常用的功能,布局最直观的就是提供空间使用率,改善空间的流动和模块之间的重叠,让界面更加的美观

二、布局类Layout

2.1 介绍

         将Layout类型的对象附加到布局的子元素上,提供有关该项的特定于布局的信息,附加对象的属性也会影响布局安排项目的方式。

        提供最小宽度minimumWidth最大宽度maximumWidth首选宽度preferredWidth等影响元素的宽度,填充宽度fillWidth填充高度fillHeight属性如果它们为false,则项目的大小将固定为首选大小,否则,当布局调整大小时,它将在最小最大之间增长或缩小。

 ColumnLayout{spacing: 2Rectangle {Layout.alignment: Qt.AlignCentercolor: "red"Layout.preferredWidth: 40Layout.preferredHeight: 40}Rectangle {Layout.alignment: Qt.AlignRightcolor: "green"Layout.preferredWidth: 40Layout.preferredHeight: 70}Rectangle {Layout.alignment: Qt.AlignBottomLayout.fillHeight: truecolor: "blue"Layout.preferredWidth: 70Layout.preferredHeight: 40}}

        注意:不要绑定到布局中项目的x、y、width或heigh属性,因为这将与布局的目标相冲突,并且还可能导致绑定循环。布局引擎使用宽度和高度属性来存储从最小/首选/最大附加属性计算出来的项目的当前大小,并且可以在每次布局项目时重写。

2.2 依附属性

Layout.alignment : Qt.Alignment

        此属性表示元素在其占用的单元格内的对齐方式,默认为左对齐+纵向居中,也就是Qt.AlignVCenter | Qt.AlignLeft,如果只指定了水平标志,默认的垂直标志将是Qt.AlignVCenter,如果只指定了垂直标志,默认的水平标志将是Qt.AlignLeft。

        有效的对齐方式有:

  • Qt::AlignLeft                水平左对齐
  • Qt::AlignHCenter         水平居中
  • Qt::AlignRight              水平右对齐
  • Qt::AlignTop                 垂直顶部对齐
  • Qt::AlignVCenter          垂直居中
  • Qt::AlignBottom            垂直底部对齐
  • Qt::AlignBaseline          垂直基线对齐

 

Layout.margins : real

Layout.bottomMargin : real

Layout.topMargin : real

Layout.rightMargin : real

Layout.leftMargin : real

        设置布局内元素的外边距,默认为0。如果设置了边距,那么元素的有效单元格大小将随着边距的增加而增加。

Layout.maximumHeight : real

Layout.maximumWidth : real

Layout.minimumHeight : real

Layout.minimumWidth : real

Layout.preferredHeight : real

Layout.preferredWidth : real

Layout.fillHeight : bool

Layout.fillWidth : bool

        设置布局内元素的宽高和是否填充策略。

Layout.column : int

Layout.row : int

        指定元素在网格布局GridLayout中的位置。

Layout.columnSpan : int

Layout.rowSpan : int

        指定元素在网格布局GridLayout中的行和列跨度,默认值为1,也就是占据一行一列。     

        在下面的例子中,第一个元素的行跨度为2,所以它占据了两行,在实际的应用场景中,该属性在网格布局中是非常好用的。

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.VirtualKeyboard 2.15
import QtQuick.Layouts 1.15Window {id: windowwidth:800height: 600visible: truetitle: qsTr("Hello World")GridLayout{anchors.centerIn: parentcolumns: 3Rectangle {Layout.alignment: Qt.AlignBottomLayout.fillHeight: trueLayout.rowSpan: 2color: "blue"Layout.preferredWidth: 70Layout.preferredHeight: 40}Rectangle {Layout.alignment: Qt.AlignBottomLayout.fillHeight: truecolor: "blue"Layout.preferredWidth: 70Layout.preferredHeight: 40}Rectangle {Layout.alignment: Qt.AlignBottomLayout.fillHeight: truecolor: "blue"Layout.preferredWidth: 70Layout.preferredHeight: 40}Rectangle {Layout.alignment: Qt.AlignBottomLayout.fillHeight: truecolor: "blue"Layout.preferredWidth: 70Layout.preferredHeight: 40}Rectangle {Layout.alignment: Qt.AlignBottomLayout.fillHeight: truecolor: "blue"Layout.preferredWidth: 70Layout.preferredHeight: 40}}}

三、行布局模块RowLayout、列布局模块ColumnLayout

        这两种模块的作用比较单一,只支持一行/一列的元素的布局,通过Layout类的依附属性完成界面的设计。

3.1 属性

layoutDirection : enumeration

        此属性保留列布局的布局方向是从左到右还是从右到左进行布局,默认为从左到右,在开头实例布局方向,左侧为从右到左效果,右侧为从左到右效果。

spacing : real

        该属性每个单元格之间的间距,默认为5。

四、网格布局模块GridLayout

        网格布局是单向布局的高级版本,代码参考第二个实例。

4.1属性

        layoutDirection属性与单向布局相同,其他属性还有:

columnSpacing : real

rowSpacing : real

        每个单元格之间的行列间距,默认为5。

flow : enumeration

        该属性表示没有显式单元格位置集的项的流向。它与columns或rows属性一起使用,它们分别指定何时将流重置为下一行或下一列,默认为从左到右。

        下面的实例中,通过五个不同颜色的

GridLayout{                             anchors.centerIn: parent            columns:2                           // rows: 3                           // flow:GridLayout.TopToBottom       Rectangle {                         Layout.alignment: Qt.AlignBottomLayout.fillHeight: true         Layout.rowSpan: 2               color: "blue"                   Layout.preferredWidth: 70       Layout.preferredHeight: 40      }                                   Rectangle {                         Layout.alignment: Qt.AlignBottomLayout.fillHeight: true         color: "red"                    Layout.preferredWidth: 70       Layout.preferredHeight: 40      }                                   Rectangle {                         Layout.alignment: Qt.AlignBottomLayout.fillHeight: true         color: "green"                  Layout.preferredWidth: 70       Layout.preferredHeight: 40      }                                   Rectangle {                         Layout.alignment: Qt.AlignBottomLayout.fillHeight: true         color: "grey"                   Layout.preferredWidth: 70       Layout.preferredHeight: 40      }                                   Rectangle {                         Layout.alignment: Qt.AlignBottomLayout.fillHeight: true         color: "black"                  Layout.preferredWidth: 70       Layout.preferredHeight: 40      }                                   
}                                       

GridLayout{                             anchors.centerIn: parent            // columns:2                         rows: 3                             flow:GridLayout.TopToBottom         Rectangle {                         Layout.alignment: Qt.AlignBottomLayout.fillHeight: true         Layout.rowSpan: 2               color: "blue"                   Layout.preferredWidth: 70       Layout.preferredHeight: 40      }                                   Rectangle {                         Layout.alignment: Qt.AlignBottomLayout.fillHeight: true         color: "red"                    Layout.preferredWidth: 70       Layout.preferredHeight: 40      }                                   Rectangle {                         Layout.alignment: Qt.AlignBottomLayout.fillHeight: true         color: "green"                  Layout.preferredWidth: 70       Layout.preferredHeight: 40      }                                   Rectangle {                         Layout.alignment: Qt.AlignBottomLayout.fillHeight: true         color: "grey"                   Layout.preferredWidth: 70       Layout.preferredHeight: 40      }                                   Rectangle {                         Layout.alignment: Qt.AlignBottomLayout.fillHeight: true         color: "black"                  Layout.preferredWidth: 70       Layout.preferredHeight: 40      }                                   
}                                       

columns : int

rows : int

         限制创建的行和列数,要注意元素超出范围,否则会崩溃,默认不限制。

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

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

相关文章

在AWS Lambda上部署标准FFmpeg工具——自定义层的方案

大纲 1 确定Lambda运行时环境1.1 Lambda系统、镜像、内核版本1.2 运行时1.2.1 Python1.2.2 Java 2 打包FFmpeg3 创建Lambda的Layer4 测试4.1 创建Lambda函数4.2 附加FFmpeg层4.3 添加测试代码4.4 运行测试 参考文献 FFmpeg被广泛应用于音/视频流处理领域。对于简单的需求&#…

阿里云Arthas使用——在日志没有输出异常情况下,如何进行线上bug定位 stack命令 和 trace命令

前言 Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类…

FreeRTOS-Plus-CLI移植

FreeRTOS-Plus-CLI移植 Fang XS.1452512966qq.com如果有错误,希望被指出,学习技术的路难免会磕磕绊绊量的积累引起质的变化 介绍 FreeRTOS-Plus-CLI是FreeRTOS的组件之一。FreeRTOS-Plus-CLI提供了一种简单、小巧、可扩展且RAM高效的启用方法方便Free…

分享67个节日PPT,总有一款适合您

分享67个节日PPT,总有一款适合您 67个节日PPT下载链接:https://pan.baidu.com/s/1oU-UUCV_69e8Gp5Y6zrzVA?pwd6666 提取码:6666 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易…

uniapp-hubildx配置

1.配置浏览器 (1)运行》运行到浏览器配置》配置web服务器 (2)选择浏览器安装路径 (3)浏览器安装路径: (3.1) 右键点击图标》属性 (3.2)选择目标&…

FutureTask

1. 作用 异步操作获取执行结果取消任务执行&#xff0c;判断是否取消执行判断任务执行是否完毕 2. demo public static void main(String[] args) throws Exception {Callable<String> callable () -> search();FutureTask<String> futureTasknew FutureTask&…

Java多线程技术二:线程间通信——ThreadLocal的使用

1 概述 变量值的共享可以使用public static 的声明方式&#xff0c;所有的线程都是用同一个public static变量&#xff0c;那如果想实现每一个线程都有自己的变量该如何解决呢&#xff1f;JDK提供的ThreadLocal就派上用场了。 ThreadLocal类主要的作用就是将数据放入当前线程对…

web前端开发HTML/css用户登录界面

代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"> <head> <meta http-equi…

神经网络常用归一化和正则化方法解析(一)

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…

Win环境中安装Jenkins指南

目录 安装Java环境 下载并安装Jenkins Jenkins版本 启动Jenkins 如何删除Jenkins 安装Java环境 访问 Oracle官方网站 下载并安装JDK 安装完成后&#xff0c;设置系统环境变量 JAVA_HOME 到你的 JDK 安装路径&#xff0c;并将 %JAVA_HOME%\bin 添加到系统 PATH 中。 下载…

Apollo新版本Beta技术沙龙参会感受:未来的自动驾驶之旅

Apollo新版本Beta技术沙龙参会感受&#xff1a;未来的自动驾驶之旅 &#x1f697;&#x1f4a1; 文章目录 Apollo新版本Beta技术沙龙参会感受&#xff1a;未来的自动驾驶之旅 &#x1f697;&#x1f4a1;摘要引言正文&#x1f4cd; 参会流程介绍&#x1f31f; 参会收获&#x1…

「Verilog学习笔记」任意小数分频

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1nsmodule div_M_N(input wire clk_in,input wire rst,output wire clk_out );parameter M_N 8d87; parameter c89 8d24; // 8/9时钟切换点parameter di…

封装时间轴组件 timeline

要求时间轴的点展示进度百分比&#xff0c;线也根据进度不同展示不同长度的颜色 实现效果&#xff1a; 使用的组件库是vant的circle 子组件&#xff1a; <template><div class"m-timeline-area" :style"width: ${width}px"><div class&qu…

聊聊 Jetpack Compose 的 “状态订阅自动刷新” -- 你真的了解重组吗?

Jekpack Compose “状态订阅&自动刷新” 系列&#xff1a; 【 聊聊 Jetpack Compose 的 “状态订阅&自动刷新” - - MutableState/mutableStateOf 】 【 聊聊 Jetpack Compose 的 “状态订阅&自动刷新” - - remember 和重组作用域 】 【 聊聊 Jetpack Compose 的 …

Spring Cloud 配置 Druid(二)

不废话&#xff0c;直接上代码&#xff0c; Nacos搭建的微服务&#xff0c;可以看Spring Cloud 配置 Nacos&#xff08;一&#xff09;-CSDN博客 一&#xff0c;pom文件 spring-cloud-starter-alibaba-nacos-discovery 和 spring-cloud-starter-openfeign 都是基于spring-cl…

Apollo新版本Beta技术沙龙的参会感受

Apollo新版本Beta技术沙龙的参会感受 Apollo新版本Beta技术沙龙的参会感受摘要 &#x1f697;&#x1f310;参会流程 &#x1f5d3;️展厅参观/展厅讲解 &#x1f3e2;进入百度Apollo未来驾驶汽车5G云代驾的神奇签到 &#x1f4dd;Apollo新版本Beta整体介绍 &#x1f680;技术分…

C语言:用递归的方法求斐波那契数列:1,1,2,3,5,8,……的前40个数

分析&#xff1a; 首先&#xff0c;在代码的起始部分&#xff0c;包含<stdio.h>头文件&#xff0c;这个头文件提供了输入和输出的函数。 然后&#xff0c;定义了四个变量&#xff1a;f、f1、f2和i。f1和f2是斐波那契数列的前两个数字&#xff0c;初始化为1。f是当前计…

qt使用wimlib-imagex,做windows系统备份还原

wimlib-imagex是个第三方工具&#xff0c;可对系统映像进行操作&#xff0c;下载地址&#xff1a; https://wimlib.net/downloads/index.html 程序主要用到以下这两个文件&#xff1a;libwim-15.dll和wimlib-imagex.exe wimlib-imagex.exe的调用命令参数&#xff0c;可以通过…

【Docker】资源配额及私有镜像仓库

资源配额及私有镜像仓库 一、Docker资源配额1.1、控制cpu1.1.1、cpu份额控制1.1.2、core核心控制1.1.3、配额控制参数的混合使用 1.2、控制内存1.3、控制IO1.4、资源释放 二、Docker私有镜像仓库Harbor2.1、Harbor简介2.2、为Harbor自签发证书【1】生成ca证书【2】生成域名的证…

输出完全二叉树中某个结点的双亲和所有子孙。假设完全二叉树的顺序存储在一维数组A[n]中。

思路&#xff1a; 首先定义两个函数&#xff0c;getParent函数用于获取指定结点的双亲结点的索引&#xff0c;printDescendants函数用于输出指定结点的所有子孙。然后在main函数中&#xff0c;创建表示完全二叉树的数组A&#xff0c;并针对指定结点索引进行相关操作&#xf…