Qml学习——布局

news2025/6/9 15:57:44

最近在学习Qml,但对Qml的各种用法都不太熟悉,总是会搞忘,所以写几篇文章对学习过程中的遇到的东西做一个记录。
学习参考视频:https://www.bilibili.com/video/BV1Ay4y1W7xd?p=1&vd_source=0b527ff208c63f0b1150450fd7023fd8

目录

  • 1 锚点布局
    • 1.1 锚定线和间距
    • 1.2 示例
      • 控件之间相对位置
      • 设置间隙
      • 填满窗口
      • 混合使用
  • 2 Qt Quick Layouts布局
    • 2.1 GridLayout(网格布局)
    • 2.2 ColumnLayout(列布局)
    • 2.3 RowLayout(行布局)
    • 2.3 StackLayout(栈布局)


1 锚点布局

Qt Quick控件的基类Item提供了anchor(锚点),可以用来布局控件的位置。
下面是一个简单的锚点布局示例,将矩形块布局到窗口的右下角。

Window {
    visible: true; width: 200; height: 200
    Rectangle {
        width: 50; height: 50; color: "blue";

        anchors.right: parent.right      //矩形的右锚定线对齐窗口的右锚定线
        anchors.bottom: parent.bottom	 //矩形的下锚定线对齐窗口的下锚定线
    }
}

在这里插入图片描述
在这个示例中,矩形的右锚定线和下锚定线分别被设置为了窗口的右锚定线和下锚定线,所以最终矩形出现在窗口的右下角。

anchors提供了以下属性。

属性名类型描述
anchors.alignWhenCenteredbool居中时是否对齐
anchors.baselineAnchorLine基准线,作用和anchors.top一样
anchors.baselineOffsetreal基准线偏移量
anchors.bottomAnchorLine下锚定线
anchors.bottomMarginreal下锚定线间距
anchors.centerInItem位于目标控件中心
anchors.fillItem填满目标控件
anchors.horizontalCenterAnchorLine水平方向的中心锚定线
anchors.horizontalCenterOffsetreal水平方向的中心锚定线偏移量
anchors.leftAnchorLine左锚定线
anchors.leftMarginreal左锚定线间距
anchors.marginsreal上下左右四根锚定线的间距
anchors.rightAnchorLine右锚定线
anchors.rightMarginreal右锚定线间距
anchors.topAnchorLine上锚定线
anchors.topMarginreal上锚定线间距
anchors.verticalCenterAnchorLine垂直方向的中心锚定线
anchors.verticalCenterOffsetreal垂直方向的中心锚定线偏移量

1.1 锚定线和间距

以anchors.top为例。
若没有设置anchors.topMargin或anchors.topMargin为0。
在这里插入图片描述
若设置了anchors.topMargin不为0。
在这里插入图片描述

1.2 示例

控件之间相对位置

Window {
    visible: true; width: 200; height: 200
    Rectangle {
        id: r1
        width: 50; height: 50; color: "red";
        /* 以r2为基准布局 */
        anchors.right: r2.left
        anchors.top: r2.top
    }

    Rectangle {
        id: r2
        width: 50; height: 50; color: "blue";
		/* 布局到窗口中央 */
        anchors.centerIn: parent
    }
}

在这里插入图片描述

设置间隙

Window {
    visible: true; width: 200; height: 200
    Rectangle {
        width: 50; height: 50; color: "blue";

        /* 设置矩形位置在parent的右下角,间隙为10 */
        anchors.right: parent.right
        anchors.rightMargin: 10
        anchors.bottom: parent.bottom
        anchors.bottomMargin: 10
    }
}

在这里插入图片描述

填满窗口

Window {
    visible: true; width: 200; height: 200
    Rectangle {
        color: "blue";
        anchors.fill: parent
    }
}

在这里插入图片描述

混合使用

Window {
    visible: true; width: 200; height: 200
    Rectangle {
        id: r1
        color: "blue";
        anchors.fill: parent
        anchors.topMargin: 50
        anchors.rightMargin: 50
    }
    Rectangle {
        id: r2
        color: "red";
        anchors.top: parent.top
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.bottom: r1.top
    }
    Rectangle {
        id: r3
        color: "green";
        anchors.top: r1.top
        anchors.left: r1.right
        anchors.right: parent.right
        anchors.bottom: parent.verticalCenter
    }
    Rectangle {
        id: r4
        color: "orange";
        anchors.top: parent.verticalCenter
        anchors.left: r1.right
        anchors.right: parent.right
        anchors.bottom: parent.bottom
    }
}

请添加图片描述

2 Qt Quick Layouts布局

Qt Quick Layouts提供了以下几种布局方式。

名称描述
GridLayout提供一种在网格中动态排列项目的方法
ColumnLayout与GridLayout相同,但只有一列
RowLayout与GridLayout相同,但只有一行
StackLayout只会同时显示一个控件的控件堆栈

2.1 GridLayout(网格布局)

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Layouts 1.12

Window {
    visible: true; width: 200; height: 120
    GridLayout {
        id: grid
        columns: 2

        Text { text: "1";}
        Text { text: "22";}
        Text { text: "333";}
        Text { text: "4444";}
        Text { text: "55555";}
    }
}

在这里插入图片描述

2.2 ColumnLayout(列布局)

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Layouts 1.12

Window {
    visible: true; width: 200; height: 120

    ColumnLayout {
        Text { text: "1";}
        Text { text: "22";}
        Text { text: "333";}
        Text { text: "4444";}
        Text { text: "55555";}
    }
}

在这里插入图片描述

2.3 RowLayout(行布局)

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Layouts 1.12

Window {
    visible: true; width: 200; height: 120

    RowLayout {
        Text { text: "1";}
        Text { text: "22";}
        Text { text: "333";}
        Text { text: "4444";}
        Text { text: "55555";}
    }
}

在这里插入图片描述

2.3 StackLayout(栈布局)

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Layouts 1.12
import QtQuick.Controls 2.12

Window {
    visible: true; width: 200; height: 120

    StackLayout {
        id: stack
        Text { text: "1";}
        Text { text: "22";}
        Text { text: "333";}
        Text { text: "4444";}
        Text { text: "55555";}
    }

    RowLayout {
        anchors.bottom: parent.bottom
        
        Button {
            text: '上一个'
            onClicked: stack.currentIndex > 0 ? stack.currentIndex-- : 0
        }
        
        Button {
            text: '下一个'
            onClicked: stack.currentIndex < 4 ? stack.currentIndex++ : 0
        }
    }
}

请添加图片描述

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

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

相关文章

C++ 浅谈之 STL List

C 浅谈之 STL List HELLO&#xff0c;各位博友好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 这里是 C 浅谈系列&#xff0c;收录在专栏 C 语言中 &#x1f61c;&#x1f61c;&#x1f61c; 本系列阿呆将记录一些 C 语言重要的语法特性 &#x1f3c3;&am…

如何在Visual Studio、Clion、Msys2中安装和使用vcpkg

首先事情是在安装了Msys2之后&#xff0c;想在Clion中使用安装在Msys2中的vcpkg。但是折腾了很久还是无法解决。于是就折腾出了这篇文章&#xff0c;和下一篇如何在Clion使用vcpkg的文章。 不过&#xff0c;由于我电脑上已近配置好了vcpkg以及环境变量&#xff0c;要是重新删除…

【C】ASCII 的十六进制字符转文件

概述 本项目是我自己使用的 来源于用串口传文件数据到电脑进行分析的时候,需要转换成可以打开的文件 而常用的串口助手大都没有直接保存为二进制文件的功能 也完全可以当作c语言初学者的练习项目(很简单) 需求 用串口传来的文件是如下格式(ASCII字符) 需要将其转化为二进制数据…

Netty相关面试题

文章目录TCP、UDP的区别&#xff1f;同步与异步、阻塞与非阻塞的区别&#xff1f;BIO、NIO、AIO分别是什么&#xff1f;Netty跟Java NIO有什么不同&#xff0c;为什么不直接使用JDK NIO类库&#xff1f;Netty的粘包/拆包是怎么处理的&#xff0c;有哪些实现&#xff1f;说说Net…

网络安全的就业及发展前景如何?

网络空间安全专业简称“网络安全专业”&#xff0c;主要以信息构建的各种空间领域为主要研究对象&#xff0c;包括网络空间的组成、形态、安全、管理等。该专业致力于培养“互联网”时代能够支撑和引领国家网络空间安全领域的具有较强的工程实践能力&#xff0c;系统掌握网络空…

完美!终于有人把《数据结构与算法》讲透彻了(附源码笔记),复杂的问题变简单了

开篇 数据结构是计算机科学与技术专业非常重要的一门核心基础课&#xff0c;计算机科学各个领域以及各种应用软件都要使用相关的数据结构和算法。 本篇的主要目的不是提供关于数据结构和算法的定理及证明。本书采用的模式是利用不同的复杂度改善问题的解决(对于每个问题&…

Spring面试重点(一)——Spring容器

Spring容器 手写Autowired注解 /** 实现spring的Autowired注解 **/ //运行时触发 Retention(RetentionPolicy.RUNTIME) //作用于变量 Target(ElementType.FIELD) public interface Autowired {}public class UserController {Autowiredprivate UserService userService;/*** …

专家说年轻人工资低是能力不行….

我们国家的很多专家总讲究语不惊人死不休&#xff0c;同时他们还很喜欢话风高速原地调头。 最近又有一个碉堡了的专家在大放厥词&#xff0c;就在前几天的首届长白山高峰论坛上中航基金副总经理邓海清发表批评年轻人的言论&#xff0c;邓老板是这么说的&#xff1a;很多年轻人…

数据分析实战项目3:RFM用户分群

目录1、RFM模型介绍2、Excel实际RFM划分案例3、RFM案例3.1 数据加载和基本信息查看3.2 数据预处理和RFM的初始值计算3.3 RFM区间和划分和分值计算3.4 RFM计算结果保存3.4.1 保存到excel3.4.2 保存到数据库3.5 RFM计算结果可视化3.6 结果分析&#xff08;营销建议&#xff09;3.…

[docker]笔记-基础配置

1、docker启动和设置开机启动 [rootlocalhost ~]# systemctl start docker [rootlocalhost ~]# systemctl enable docker 2、更换docker镜像网站&#xff0c;默认docker镜像网站是国外网站&#xff0c;下载镜像非常慢&#xff0c;需要更换为国内网站&#xff0c;以阿里云为例…

android多渠道打包(只编译一次)

众所周知&#xff0c;android 默认工具gradle可以配置多个productFlavors&#xff0c;以此实现配置多个不同版本&#xff0c;渠道的app应用&#xff0c;笔者认为这个编译速度很慢&#xff0c;于是乎有了今天的方案。希望能抛砖引玉为大家带来不一样的思路&#xff0c;废话不多说…

基于蜣螂算法改进的DELM预测-附代码

基于蜣螂算法改进的深度极限学习机DELM的回归预测 文章目录基于蜣螂算法改进的深度极限学习机DELM的回归预测1.ELM原理2.深度极限学习机&#xff08;DELM&#xff09;原理3.蜣螂算法4.蜣螂算法改进DELM5.实验结果6.参考文献7.Matlab代码1.ELM原理 ELM基础原理请参考&#xff1…

QT基础入门【布局篇】消除控件之间的间隔

一、相关参数 layoutLeftMargin: layout内的布局距离边框左端的距离。 layoutTopMargin: layout内的布局距离边框顶端的距离。 layoutRightMargin: layout内的布局距离边框右端的距离。 layoutBottomMargin: layout内的布局距离边框底端的距离。 layoutHorizontalSpacing: layo…

【每日阅读】前端了解的HTTP协议知识(二)

HTTP 简介 HTTP 协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写,是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议&#xff1b; HTTP工作原理 HTTP协议工作于客户端-服务端架构上&#xf…

算法导论—近似算法

近似算法基础1. 近似算法的基本概念2. 近似算法的性能分析1. 近似算法的基本概念 很多实际应用问题都是NP-完全问题&#xff0c;这类问题很可能不存在多项式时间算法。一般而言&#xff0c;NP-完全问题可采用以下三种方式处理。 如果问题的输入规模较小&#xff0c;则可以利用…

利用IO工具包拷贝文件夹或者文件

引入依赖 <dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version> </dependency> code 拷贝文件夹 PostMapping("/findB00List") CrossOrigin public Result …

(考研湖科大教书匠计算机网络)第三章数据链路层-第十节:以太网交换机的生成树协议STP

获取pdf&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;以太网故障导致的网络问题二&#xff1a;利用冗余链路提高稳定性&#xff08;1&#xff09;概述&#xff08;2&#xff09;冗余链路带来的问题三&a…

Swagger2 3.0的使用

前言 今天使用了以下swagger2 的3.0.0版本&#xff0c;好家伙&#xff0c;好多坑。在这里记录一下&#xff0c;方便查阅。 一、Swagger的简介 官网&#xff1a;https://swagger.io/ Swagger 是一个规范且完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的…

应用监控以及告警实现

前言 一个Java应用 可以不优秀&#xff0c;但是一定不能没有监控方案。否则极大影响排查线上问题的效 以及系统故障的及时告警 。试想 核心应用挂了一个 但是没有配置告警 理想情况几个小时 被自己人发现了 但是万一自己人也没看到或者没关注 那难道让服务一直挂下去么 &#…

Vue框架学习篇(五)

Vue框架学习篇(五) 1 组件 1.1 组件的基本使用 1.1.1 基本流程 a 引入外部vue组件必须要的js文件 <script src"../js/httpVueLoader.js"></script>b 创建.vue文件 <template><!--公共模板内容--></template><script><!…