qml中布局属性讲解

news2024/12/23 8:26:41

1.行布局&列布局:RowLayout&ColumnLayout

RowLayout {
     id: layout
     anchors.fill: parent
     spacing: 6
     Rectangle {
         color: 'teal'
         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
         }
     }
 }

在这里插入图片描述

列布局RowLayout将会使它自身内的所有子对象进行一个垂直布局.效果如下

ColumnLayout{
     spacing: 2

     Rectangle {
         Layout.alignment: Qt.AlignCenter
         color: "red"
         Layout.preferredWidth: 40
         Layout.preferredHeight: 40
     }

     Rectangle {
         Layout.alignment: Qt.AlignRight
         color: "green"
         Layout.preferredWidth: 40
         Layout.preferredHeight: 70
     }

     Rectangle {
         Layout.alignment: Qt.AlignBottom
         Layout.fillHeight: true
         color: "blue"
         Layout.preferredWidth: 70
         Layout.preferredHeight: 40
     }
 }

在这里插入图片描述

2、常用属性:

layoutDirection: enumeration // 布局方向,默认是从左到右排列(Qt.LeftToRight)
enumeration:
>Qt.LeftToRight (default) // 从左到右
>Qt.RightToLeft // 从右到左
spacing : real // 项之间的间隔,默认是5. 浮点类型
// 附加属性,可以附加给子对象:
Layout.preferredWidth: real // 首选宽度
Layout.preferredHeight : real // 首选高度
Layout.maximumWidth: real // 最大宽度
Layout.minimumHeight: real // 最小宽度
Layout.maximumHeight : real // 最大高度
Layout.minimumHeight : real // 最小高度
Layout.fillWidth : bool // 默认为false, 若为true的话,组件将在遵守约定的情况下尽可能的大,若为false的话则组件默认以首选宽度的大小
Layout.fillHeight : bool // 默认为false, 若为true的话,组件将在遵守约定的情况下尽可能的大,若为false的话则组件默认以首选高度的大小
Layout.alignment : Qt.Alignment // 对齐方式,可以指定对象在布局中的对齐方向
Qt.Alignment:
Qt::AlignLeft // 左对齐
Qt::AlignHCenter // 水平居中
Qt::AlignRight // 右对齐
Qt::AlignTop // 顶部对齐
Qt::AlignVCenter // 垂直对齐
Qt::AlignBottom // 底部对齐
Qt::AlignBaseline // 与基线对齐
Layout.rightMargin : real // 设置右边距
Layout.leftMargin : real // 设置左边距
Layout.topMargin : real // 设置顶边距
Layout.bottomMargin : real // 设置底边距

下面做个示范来演示部分上列部分属性

RowLayout {
         id: layout
         anchors.fill: parent
         spacing: 6
         Rectangle {
             color: 'teal'
             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
             }
         }
     }

在这里插入图片描述
在这里插入图片描述

ColumnLayout{
        anchors.fill: parent
        spacing: 6                                  // 设置间隔
        Label{
            text: "登录"
            font.bold: true                         // 字体加租
            font.family: "微软雅黑"                 // 选择字体
            font.pixelSize: 20                      // 字体大小
            Layout.alignment:Qt.AlignHCenter        // 居中
            Layout.bottomMargin: 10                 // 设置底部边距
        }

        RowLayout {
            Layout.alignment: Qt.AlignHCenter       // 居中显示
             Label{
               text:"用户名:"
                Layout.preferredWidth:50            // 设置首选宽度
             }
             TextField{
                 width: 100
                 Layout.preferredWidth: 200         // 设置首选宽度
                 placeholderText: "请输入用户名"    // 默认文字
             }
        }
        RowLayout {
            Layout.alignment: Qt.AlignHCenter       // 居中显示
             Label{
               text:"密码:"
               Layout.preferredWidth:50             // 设置首选宽度
             }
             TextField{
                 Layout.preferredWidth: 200         // 设置首选宽度
                 placeholderText: "请输入密码"      // 默认文字
             }
        }
        Button{
            text: "登录"
            Layout.preferredWidth: 250
            Layout.alignment:Qt.AlignHCenter
        }
    }

3、网格布局(GridLayout)

网格布局可以快速生成多行多列的布局如下图

GridLayout {
     id: grid
     columns: 3                                 // 设置3列

     Text { text: "Three"; font.bold: true; }   // 设置加租
     Text { text: "words"; color: "red" }       // 设置红色
     Text { text: "in"; font.underline: true }  // 设置下划线
     Text { text: "a"; font.pixelSize: 20 }     // 设置字体大小
     Text { text: "row"; font.strikeout: true } // 设置删除线
 }

在这里插入图片描述

4、转载文章

https://www.bilibili.com/read/cv21885803/

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

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

相关文章

基于nginx的虚拟主机配置

目录 一.基于不同ip的虚拟主机 二.基于不同端口的虚拟主机 三.基于不同域名的虚拟主机 一.基于不同ip的虚拟主机 1.关闭 SELinux和防火墙 2.在/data目录中创建三个目录,分别为nginx1、nginx2 和nginx3,具体名为: 3.分别在三个目录中创建index.html,并输入内容“…

C++程序在开机自启和定时器执行时遇到的问题和解决方法

遇到的错误如下: Camera is created.load vfvlog.[dll/so] failed for dll[/vfvlog.so] unexistedLoadDbgConfig, LoadFile fail, err:-3, errno: No such file or directoryqt.qpa.xcb: could not connect to displayqt.qpa.plugin: Could not load the Qt platfo…

XSS haozi靶场通关笔记

XSS靶场地址:alert(1) 靶场的要求是输出一个内容为1的弹窗;这个靶场限制了输入位置只能是input code;而且浏览器发送内容时会自动进行url编码;所以重点考察的是代码的分析和基础payload构造;一切完成在当前页面&#…

毫米波雷达在汽车领域的原理、优势和未来趋势

1 毫米波雷达的原理 汽车引入毫米波雷达最初主要是为了实现盲点监测和定距巡航。毫米波实质上是电磁波,其频段位于无线电和可见光、红外线之间,频率范围为10GHz-200GHz。工作原理类似一般雷达,通过发射无线电波并接收回波,利用障…

Dynamo根据几何相交对墙体进行分组——群问题整理002

你好,这里是 BIM 的乐趣,我是九哥~ 近期给大家分享一些短平快的小教程,基本都是来自群里面常问的问题,不做过多的介绍了,直接上截图和代码。 问题:002 - 根据几何相交对墙体进行分组 今天分享的&#xff0…

C++后端开发之Sylar学习二:配置VSCode远程连接Ubuntu开发

C后端开发之Sylar学习二:配置VSCode远程连接Ubuntu开发 没错,我不能像大佬那样直接在Ubuntu上面用Vim手搓代码,只能在本地配置一下VSCode远程连接Ubuntu进行开发咯! 本篇主要是讲解了VSCode如何配置ssh连接Ubuntu,还有…

【文件增量备份系统】前端项目构建

文章目录 创建项目安装项目依赖引入element plus组件下载组件在main.js中使用组件测试 整合路由router下载组件创建路由管理器index.js使用路由App.vue上面使用 <router-view />测试 整合axios下载组件工具类axiosRequest.js工具类使用 创建项目 damwangrunqindeMBP dev…

PyTorch 2.2 中文官方教程(十四)

参数化教程 原文&#xff1a; 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 作者&#xff1a;Mario Lezcano 注意 点击这里下载完整示例代码 在本教程中&#xff0c;您将学习如何实现并使用此模式来对模型进行约束。这样做就像编写自己的nn.Module一样容易。 对深…

Mybatis基础教程及使用细节

本篇主要对Mybatis基础使用进行总结&#xff0c;包括Mybatis的基础操作&#xff0c;使用注解进行增删改查的练习&#xff1b;详细介绍xml映射文件配置过程并且使用xml映射文件进行动态sql语句进行条件查询&#xff1b;为了简化java开发提高效率&#xff0c;介绍一下依赖&#x…

树莓派5一键安装C++版本OpenCV

安装环境 本人当前的安装环境&#xff1a; 树莓派5Raspberry Pi os (64-bit) Debian12 Bookworm 镜像下载地址 我这里是将镜像安装好后直接安装opencv&#xff0c;如果不是刚安装好的镜像需要注意是否有openCV的python之类的安装过&#xff0c;不然可能出现编译错误 一、扩展内…

vue3+threejs+koa可视化项目——模型文件上传(第四步)

文章目录 ⭐前言&#x1f496;往期node系列文章&#x1f496;threejs系列相关文章&#x1f496;vue3threejs系列 ⭐koa后端文件上传(koa-body)&#x1f496;自动创建目录&#x1f496;自定义目录上传&#x1f496;apifox自测上传接口 ⭐vue3前端上传模型文件&#x1f496; axio…

echarts使用之饼图(四)

1 基本使用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible" cont…

latex multirow学习

今天搞了一晚上的这个multirow&#xff0c;总算弄出来了几个比较好的例子&#xff0c;主要是这个multirow的语法我没看懂&#xff0c;这个逻辑我是没理解&#xff0c;就很尴尬&#xff0c;一改就报错&#xff0c;只能先弄几个例子&#xff0c;自己慢慢试 \documentclass{artic…

k8s学习-Kubernetes的网络

Kubernetes作为编排引擎管理着分布在不同节点上的容器和Pod。Pod、Service、外部组件之间需要⼀种可靠的方找到彼此并进行通信&#xff0c;Kubernetes网络则负责提供这个保障。1.1 Kubernetes网络模型 Container-to-Container的网络 当Pod被调度到某个节点&#xff0c;Pod中的…

【Python】【完整代码】解析Excel 文件中的内容并检查是否包含某字符串,并返回判断结果

示例&#xff1a; 开发需求&#xff1a;解析Excel 文件中的内容并检查是否包含 "Fail" 字符&#xff0c;若没有则返回True&#xff0c;若有则返回False 实现代码&#xff1a; #!/usr/bin/env python3 # -*- encoding: utf-8 -*-File : check_excel_for_fail.py Ti…

后端程序员入门react笔记——react的生命周期(二)

React常用的钩子函数 constructor 这个函数我们太常见了&#xff0c;在初始化类的state的时候&#xff0c;或者初始化类的props的时候都会用到&#xff0c;就是一个类的构造函数。对后端人员来说很熟悉 constructor() {super();this.state {age: 18}}getDerivedStateFromPro…

【C++入门学习指南】:函数重载提升代码清晰度与灵活性

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、函数重载1.1 函数重载的概念1.2 函数重载的作用1.3 C支持函数重载的原理1.4 扩展 &…

如何写好论文——(15)如何写研究目标之实例讲解

写好研究目标一要有方向、二要有边界。 定边界的时候要有方法和结论。 下面的例子为目标的两种写法&#xff0c;第二种提供了更明确可以测量的目标。 下面的第二个例子更有方向性。第一个例子的本质是去验证一种假说&#xff0c;这种假说如果成立完全可以支撑第二种写法中的目…

【C/C++ 08】简单计算器

一、题目 输入算术表达式&#xff0c;可包含空格&#xff0c;检查算术表达式的合法性&#xff0c;若算术表达式不合法&#xff0c;打印错误类型&#xff0c;若合法&#xff0c;则进行运算&#xff0c;打印计算结果。 二、算法 1. 将输入的算术表达式字符串去除空格。 2. 检查…

Java并发(二十三)----同步模式之保护性暂停

1、定义 即 Guarded Suspension&#xff0c;用在一个线程等待另一个线程的执行结果 要点 有一个结果需要从一个线程传递到另一个线程&#xff0c;让他们关联同一个 GuardedObject 如果有结果不断从一个线程到另一个线程那么可以使用消息队列 JDK 中&#xff0c;join 的实现…