qml中布局属性讲解

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
         }
     }
 }

qml中布局属性讲解_第1张图片

列布局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
     }
 }

qml中布局属性讲解_第2张图片

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
             }
         }
     }

qml中布局属性讲解_第3张图片
qml中布局属性讲解_第4张图片

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 } // 设置删除线
 }

qml中布局属性讲解_第5张图片

4、转载文章

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

你可能感兴趣的:(qml,qml,qt)