首页 > 其他分享 >QT QML 使用布局

QT QML 使用布局

时间:2023-08-06 10:32:32浏览次数:176  
标签:QtQuick Layout QT parent 布局 height QML import

前言

既然qml主要用于写前端界面,那么布局管理肯定是相当重要的部分。下面就介绍QML布局管理中的 定位器(Positioners) 和 Layouts。

定位器(Positioners)

定位器是一个容器,可以管理其中子项目的布局。定位器包括 Row Column Grid Flow。如果它们的子项目不可见,宽度或高度为0,那么该子项目不会显示,也不会布局。定位器可以自动自动布局其子项目,也就是说子项目不再需要显式设置 x,y等坐标或者使用anchors锚进行布局

  1. Row 可以将容器的项目排成一行。可以使用spacing属性来为容器里的项目添加间距
import QtQuick 2.9
import QtQuick.Window 2.3
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.0

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    Row{
        spacing: 10
        Rectangle{
            width: 100
            height: 40
            color: "pink"
        }
        Rectangle{
            width: 20
            height: 20
            color: "black"
        }
    }
}

image.png

Layouts

QML 的布局管理器是一组用于在用户界面中排列项目的类型。与前面讲到的定位器不同,布局管理器不仅进行布局,而且会改变项目的大小,所以更适合用于需要改变用户界面大小的应用。QML 布局管理器主要包括 RowLayout ColumnLayout GridLayout.使用布局管理器有以下特色。项目的对其方式可以使用Layout.alignment属性指定。可变大小的项目可以使用 Layout.fillWidth 和 Layout.fillHeight 属性指定,当设置为true时会根据约束条件变宽或者变高,间距可以使用Spacing来确定

import QtQuick 2.9
import QtQuick.Window 2.3
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.0

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    ColumnLayout{
        anchors.fill: parent
        Rectangle{
            Layout.fillHeight: true
            Layout.minimumWidth: 200
            Layout.minimumHeight: 200
            Layout.preferredHeight: 300
            Layout.maximumHeight: 400
            color: "red"
            Text{
                anchors.centerIn: parent
                text: parent.width + "x" + parent.height
            }
        }
        Rectangle{
            Layout.fillHeight: true
            Layout.minimumWidth: 200
            Layout.minimumHeight: 200
            Layout.preferredHeight: 300
            color: "blue"
            Text{
                anchors.centerIn: parent
                text: parent.width + "x" + parent.height
            }
        }
    }
}

image.png

标签:QtQuick,Layout,QT,parent,布局,height,QML,import
From: https://blog.51cto.com/u_15885923/6982178

相关文章

  • Qt布局管理
    Qt布局管理布局管理最终的效果受到多方面的影响部件的大小策略部件的建议大小,受到部件的最小大小的影响部件的伸缩因子常见的布局管理器继承自QBoxLayout的QHBoxLayout和QVBoxLayoutQGridLayout,栅格布局管理,你可以设置部件占几行几列来控制部件之间的比例QSplitte......
  • 运用事件与定时器实现字幕滚动效果(Qt开发)
    1、效果展示我们经常能够在外面看到那种滚动字幕,那么就拿qt来做一个吧。2、实现思路实现一个窗口部件,这个窗口部件显示了一串文本标语,它会每t毫秒向左移动一个像素。如果窗口部件比文本宽,那么文本将会被多次重复,直到能够填满整个窗口部件的宽度为止。3、滚动窗口部件创建一个滚......
  • Qt 隐式共享
    Qt中的许多c++类使用隐式数据共享来最大化资源使用并最小化复制。隐式共享类作为参数传递时既安全又高效,因为只传递指向数据的指针,并且只有当函数写入数据时才会复制数据,即写时复制。 概述共享类由指向包含引用计数和数据的共享数据块的指针组成。 当创建共享对象时,它将引......
  • 最简单的Qt连接MYSQL的方法
    最简单的Qt连接MYSQL的方法⭐当我试图在项目中连接本地的mysql时,反复出现:QMYSQLdrivernotloaded,显示没有成功加载mysql的驱动,在网上查询了很多教程和视频,大多为互相转载且老旧,耗费了大半天还是没有构建成功,通常的解决方法是在本地构建mysql驱动(通过安装qt时勾选的src选项里......
  • Qt5Agg TxAgg和WXAgg的区别
    https://www.oschina.net/question/12_3252 AGG,全名:Anti-GrainGeometry,是一个开源的、高效的2D图形库。AGG的功能与GDI+的功能非常类似,但提供了比GDI+更灵活的编程接口,其产生的图形的质量也非常高,而且它是跨平台的,其宣传可以在非常多的操作系统上运行。主要的功能有:1、支......
  • QT(4)信号、SLOT和QMap - Addressbook例子2
    在之前的MeeGo开发者(五):QT(3)对象和继承小例子基础上,我们增加三个button,参考http://doc.qt.nokia.com/latest/tutorials-addressbook-part2.html、http://doc.qt.nokia.com/latest/tutorials-addressbook-part3.html和http://doc.qt.nokia.com/latest/tutorials-addressbook-part......
  • 初识QT、窗口以及信号槽
    1基本规范:无论是写什么样的代码,第一步都应该是创建一个程序对象#include<QApplication>intmain(intargc,char*argv[]){QApplicationa(argc,argv);//创建对象并调用构造函数returna.exec();//因为是gui界面开发,那么程序的生存周期应该是一直存在的}2d......
  • 十五、基于MQTT协议上传属性至ONENET Studio
    1.准备工作(1)下载MQTT透传固件(安心可官网下载即可)(2)下载MQTT固件到ESP82662.AT指令连接设备上传属性值(1)AT\r\n(2)AT+RST\r\n(3)AT+CWMODE=1\r\n(4)AT+CWDHCP=1,1\r\n(5)AT+CWJAP="WIFISSID","密码"\r\n//连接路由器(6)AT+MQTTUSERCFG=0,1,"设备名/设备id","产品I......
  • Android布局容器&视图元素
    1.界面布局简介在Android中,界面布局是指如何组织和排列用户界面中的视图(View)元素,以形成用户所看到的界面。Android提供了多种布局容器(LayoutContainer)和视图元素(ViewElement),用于实现各种不同类型的用户界面。常用的Android界面布局容器有以下几种:LinearLayout:线性布局容器,......
  • Qt 在线程中invokeMethod采用QueuedConnection模式,调用带指针参数槽,实际不会调用
    widgetObject有操函数Test:voidTest(int*v);在线程中调用Test,会被忽略,实际不会调用。QMetaObject::invokeMethod(widgetObject,"Test",Qt::QueuedConnection,Q_ARG(int*,&v));下面是网上找的理由: 在同一个线程中当信号和槽都在同一个线程中时,值传递参数和引用传递参数有......