Qt Quick Layouts Overview

2023-09-14 15:44:47

Qt快速布局概述

#【中秋征文】程序人生,中秋共享#

Qt快速布局是用于在用户界面中排列项目的项目。由于Qt快速布局还可以调整其项目的大小,因此它们非常适合可调整大小的用户界面。

开始

可以使用文件中的以下导入语句将 QML 类型导入到应用程序中。.qml

import QtQuick.Layouts 1.11

主要特点

一些主要功能是:

  • 可以使用属性指定项目数
  • 可以使用 和 属性指定。
  • 可以使用 、 和属性指定(“宽度”可以替换为“高度”,以指定与高度类似的约束)。
  • 可以使用 或 指定

除了上述功能外,还添加了以下功能:

  • 可以使用 和 属性指定。
  • 与 、 和 属性一起使用。
  • 可以使用 和 属性跨行或跨列指定。

简单的布局

Window {
    RowLayout {
        anchors.fill: parent
        spacing: 6
        Rectangle {
            color: 'azure'
            Layout.preferredWidth: 100
            Layout.preferredHeight: 150
        }
        Rectangle {
            color: "plum"
            Layout.fillWidth: true
            Layout.fillHeight: true
        }
    }
}

由于使用布局的目的是在布局更改大小时重新排列其子项,因此应用程序应确保调整布局的大小。在上面的代码片段中,通过指定 .但是,也可以通过其他方式,例如直接指定和属性。在同一代码段中,矩形具有固定大小的像素,矩形将扩展以占用它分配的所有空间。anchors.fill: parentazure(100, 150)plum

注意: 布局负责其子几何图形。因此,不应指定 、 、 或任何其他可能影响这些属性的属性(如 )。否则就会有利益冲突,结果是不确定的。如果子项是布局,也是如此。因此,只有没有父布局的布局才能具有 。anchors.fill: parent

布局中的所有项目之间将有 6 个像素的间距:

spacing: 6

大小约束

由于可以通过其布局调整项目的大小,因此布局需要知道 或 设置为 的所有项目的大小。例如,以下内容将生成一个布局,其中两个并排放置且水平延伸的矩形。天蓝色矩形的大小可以从 50x150 调整为 300x150,梅花矩形的大小可以从 100x100 调整为 ∞x100。true

RowLayout {
    id: layout
    anchors.fill: parent
    spacing: 6
    Rectangle {
        color: 'azure'
        Layout.fillWidth: true
        Layout.minimumWidth: 50
        Layout.preferredWidth: 100
        Layout.maximumWidth: 300
        Layout.minimumHeight: 150
        Text {
            anchors.centerIn: parent
            text: parent.width + 'x' + parent.height
        }
    }
    Rectangle {
        color: 'plum'
        Layout.fillWidth: true
        Layout.minimumWidth: 100
        Layout.preferredWidth: 200
        Layout.preferredHeight: 100
        Text {
            anchors.centerIn: parent
            text: parent.width + 'x' + parent.height
        }
    }
}

组合每个项的约束将为布局元素提供以下隐式约束:

最低首选最大
隐式约束(宽度)156306∞ (Number.POSITIVE_INFINITY)
隐式约束(高度)150150150

因此,布局不能小于 156,也不能高于或小于 150,而不会破坏其子项的任何约束。

指定首选大小

对于每个项目,有效的首选大小可能来自几个候选属性之一。为了确定有效的首选大小,它将按以下顺序查询这些候选属性,并使用具有有效宽度或高度的第一个候选属性。

候选属性描述
如果默认隐式大小未提供最佳排列,则应用程序应修改这些属性。
这些属性应该由每个项目提供,以提供有意义的理想大小,例如显示类型的所有内容所需的大小。隐式宽度或高度被解释为无效。0
如果上述属性都无效,则布局将采用 和 属性。

项目可以指定,而不必指定 。在这种情况下,有效首选高度将从 (或最终) 确定。

注意: 诉诸 or 属性仅作为最终回退提供。如果要覆盖首选大小,建议使用 或 。依赖 or 属性来指定首选大小可能会产生一些意外行为。例如,更改 or 属性不会触发布局重新排列。此外,当布局被迫进行完全重建时,它可能使用实际宽度和高度,而不是 QML 文件中指定的宽度和高度。

连接窗口和布局

您可以只使用普通的锚定概念来确保布局将遵循窗口大小调整。

RowLayout {
    id: layout
    anchors.fill: parent

布局的大小约束可用于确保窗口的大小不能超出布局约束。您可以从布局中获取大小约束,并在 Window 元素的最小宽度、最小高度、最大宽度和最大高度上设置这些约束。以下代码确保窗口大小不能超出布局的约束:

minimumWidth: layout.Layout.minimumWidth
minimumHeight: layout.Layout.minimumHeight
maximumWidth: 1000
maximumHeight: layout.Layout.maximumHeight

注意: 由于布局。在这种情况下,Layout.maximumWidth 是无限的,我们不能将其绑定到 Window 的 maximumWidth 属性,因为这是一个整数。因此,我们将固定的最大宽度设置为 1000。

最后,您通常希望窗口的初始大小为布局的隐式大小:

width: layout.implicitWidth
height: layout.implicitHeight
更多推荐

数据结构Map-Set和哈希表

目录概念模型MapMap的常用方法对于Map的总结SetSet的常见方法关于Set的总结哈希表概念冲突概念哈希函数设计原则常见的哈希函数1.直接定制法(常用)2.除留余数法(常用)3.平方取中法4.折叠法5.随机数法6.数学分析法冲突避免-负载因子调节冲突-解决闭散列线性探测二次探测开散列/哈希桶三个例题理解Map和S

如何在JavaScript中实现链式调用(chaining)?

聚沙成塔·每天进步一点点⭐专栏简介⭐JavaScript中的链式调用⭐示例⭐写在最后⭐专栏简介前端入门之旅:探索Web开发的奇妙世界记得点击上方或者右侧链接订阅本专栏哦几何带你启航前端之旅欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发

Linux入门教程||Linux 文件与目录管理

我们知道Linux的目录结构为树状结构,最顶级的目录为根目录/。其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。在开始本教程前我们需要先知道什么是绝对路径与相对路径。绝对路径:路径的写法,由根目录/写起,例如:/usr/share/doc这个目录。相对路径:路径的写法,不是由/写起,例如由/usr/sh

华为云云耀云服务器L实例评测|服务器反挖矿防护指南

前言本文为华为云云耀云服务器L实例测评文章,测评内容是云耀云服务器L实例反挖矿防护指南系统配置:2核2G3MCentOS7.9之前的文章中『一文教你如何防御数据库恶意攻击』,我们讲到黑客如何通过攻击数据库来获取权限,以及我们需要如何处理防护云耀云服务器L实例接下来我们将要讲述另外一种黑客攻击的手段——挖矿,本文将从黑客

Acwing算法心得——猜测短跑队员的速度(重写比较器)

大家好,我是晴天学长,今天的算法题用到了比较器的知识,是经常会用到的一个知识点,常见与同种数据的排序,需要的小伙伴请自取哦!如果觉得写的不错的话,可以点个关注哦,后续会继续更新的。💪💪💪1)猜测短跑队员的速度一个短跑运动员在一个数轴上跑步。他的奔跑速度是恒定的,但是奔跑方向可能会不断发生改变,有时朝数轴正方向,有

学习潘海东博士的《潮汐调和分析原理和应用》和调和分析软件S_Tide

潘海东博士在B站(用户名:ocean_tide)分享了他的电子书《潮汐调和分析原理和应用》,以及他开发的潮汐调和分析工具包S_Tide,非常厉害。水文同事在进行潮汐预报的时候,会经常说到调和分析和调和常数,博主一听到这些名词就懵圈,不明所以。而《潮汐调和分析原理和应用》开篇就讲潮汐调和分析求解分潮振幅和迟角的过程本质就

【每日随笔】关于 “ 终身学习 “ ① ( 各阶段学习过程 | 扫盲教育与选拔教育阶段 | 研究生阶段 | 终身学习阶段 )

文章目录一、学习的各个阶段1、扫盲教育与选拔教育阶段2、研究生阶段3、终身学习阶段4、终身学习内容推荐一、学习的各个阶段1、扫盲教育与选拔教育阶段小学六年和初中三年是扫盲教育,也就是九年义务教育,这是为了扫盲用的,初中毕业,就可以成为一个合格的劳动力;高中三年和大学四年是选拔教育,是用来选拔人才的,在之前知识的基础上,

解锁 zkSync Era:开创全新的 Layer 2 扩展时代

作者:stella@footprint.network数据来源:zkSyncDashboard在解决以太坊扩展性问题方面,Layer2解决方案备受关注。这些解决方案旨在通过引入Rollups,StateChannels或NestedBlockchains等技术来克服Layer1的局限性。在Layer2扩展领域,围绕Op

Java/JDK 21正式发布!15个特性一览

JDK21已经于2023年9月19日正式发布。本文总结了JDK21发布的新特性。发布版本说明根据发布的规划,这次发布的JDK21将是一个长期支持版(LTS版)。LTS版每2年发布一个,上一次长期支持版是21年9月发布的JDK17。本版本是JavaSE平台21版的参考实现,由Java社区流程中的JSR396指定。安装包下

「干货」洁净室悬浮粒子计数器全部常见型号参数汇总

我们的人体工程学设计轻巧的Lighthouse手持式3016-IAQ是市场上先进的手持式粒子计数器,其质量浓度模式的密度约为μg/m3。Lighthouse手持式粒子计数器最多可提供6个粒径同时计数的通道,可在快速,易于阅读的彩色触摸屏上显示累积和差分粒子计数数据以及温度/相对湿度数据。可测量PM0.5,PM1.0,P

融合柯西变异和自适应莱维飞行的布谷鸟优化算法,改进布谷鸟,MATLAB代码

经常有小伙伴后台留言问:作者改进的算法可不可以用来写论文呀?回答是:当然可以!且不用加引用!如果我的文章能帮助到大家写论文,那是作者的荣幸呀!布谷鸟优化算法是一个非常经典的优化算法,直到今天还有不少人研究对其改进。今天为大家带来一期由小淘自行改进的布谷鸟优化算法---融合柯西变异和自适应莱维飞行的布谷鸟优化算法(Cau

热文推荐