QML学习笔记3-定位-布局元素

定位元素: 有一些QML元素被用于放置元素对象,被称为定位器
QtQuick提供的定位器: Row、Column、Grid、Flow
Row: 水平排列
Column: 垂直排列
Grid: 栅格rows/columns(行列)排列
Flow(流) 通过flow(流)属性和layoutDirection(布局方向)属性来控制流的方向。它能够从头到底的横向布局,也可以从左到右或者从右
到左进行布局

布局元素: QML使用anchors(锚)对元素进行布局, 可以被所有的可视化QML元素使用
anchors是相对关系的表达式,通常需要与其他元素搭配使用
一个元素有6条锚定线(top顶, bottom底, left左, right右, horizontalCenter水平居中, verticalCenter垂直居中)
在文本元素中 有一条文本的锚定基线(baseline)。 每一条锚定线都有一个偏移量(offset)
在顶 底 左 右的锚定线被称作边距。 horizaontalCenter(水平中) vericalCenter(垂直中)与baseline(文本基线)中被称作偏移量

1 元素填充父类元素  
    anchors.fill: parent
    anchors.margins: 8        //上下左右各8像素
2 元素做对齐他的父元素
    anchors.left: parent.left
    anchors.leftMargin: 8  // 左边距8像素
3 元素的左边与他的父元素的右边对齐
    anchors.left: parent.right
4 元素中间对齐,    
    anchors.horizontalCenter: parent.horizontalCenter
5 元素在其父元素中居中
    anchors.centerIn: parent
6 元素水平方向居中对齐父类元素并向右偏移12个像素,垂直方向居中对齐
    anchors.horizontalCenter: parent.horizontalCenter
    anchors.horizontalCenterOffset: -12
    anchors.verticalCenter: parent.verticalCenter


输入元素:
文本输入(TextInput):文本输入允许用户输入一行文本。这个元素支持使用正则表达式验证器来限制输入和输入掩码的模式。
用户可以通过点击TextInout来改变焦点,可以使用keyNavigation(按键向导)附加属性,如tab键通过KeyNavigation.tab 来设置tab键切换聚焦

焦点区域(focusScope):如果焦点区域接收到焦点,它的最后一个使用focus:true的字元素接收焦点,它将会把焦点传递给最后申请焦点的子元素

例子:

//TLineEdit2.qml
import QtQuick 2.0

FocusScope {
    id: root
    width: 96; height: input.height + 8

    Rectangle{
        anchors.fill: parent
        color: 'lightsteelblue'
        border.color: 'green'
    }

    property alias text: input.text
    property alias input: input

    TextInput{
        id: input
        anchors.fill: parent
        anchors.margins: 4
        focus: true
    }
}

文本编辑(TextEdit):与TextInput(文本输入)元素相似,它支持多行文本编辑,不在支持文本输入的限制,但是提供了已绘制文本的大小查询(paintedHeight, paintedWidth)按键元素(Key Element):附加属性key允许你基于某个按键的点击来执行代码。
通过按键来控制元素的位置、旋转、缩放。例如使用up, down按键来移动一个方块, left,right按键来旋转一个元素,plus, minus按键缩放等等

import QtQuick 2.0

DarkSquare {
    width: 400; height: 200

    GreenSquare {
        id: square
        x: 8; y: 8
    }
    focus: true
    Keys.onLeftPressed: square.x -= 8
    Keys.onRightPressed: square.x += 8
    Keys.onUpPressed: square.y -= 8
    Keys.onDownPressed: square.y += 8
    Keys.onPressed: {
        switch(event.key) {
        case Qt.Key_Plus:
            square.scale += 0.2
            break;
        case Qt.Key_Minus:
            square.scale -= 0.2
            break;
        }
    }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值