当前位置:   article > 正文

QML 完全模拟飞书日程界面(一)_qt实现飞书日历功能

qt实现飞书日历功能

QML完全模仿飞书日程界面(一)

首先先贴一个飞书的日程界面截图
https://img-blog.csdnimg.cn/5fc2430c45884636b971616a87b38bdd.png


然后再贴一个本期要模仿的部分

日程标题



前言

分为四个部分,今天这个复位按钮,切换日期按钮,显示当前年份月份日期的label,用于切换日月周的tabbar


一、复位按钮部分

复位按钮
代码如下:

    Button {
        id: _resetBtn
        anchors{
            top: parent.top
            topMargin: 16
            left: parent.left
            leftMargin: 16
        }
        width: 60
        height: 32
        background: Rectangle {
            color: parent.hovered ? "#DCDFE5" : _resetBtn.checked ? "white" : "#E8F2FF"
            border.width: 1
            border.color: "#1962FF"
            radius: 4
        }
        contentItem :Text {
            color: "#1962FF"
            anchors{
//                //!这样写是为了居中
                top: parent.top
                topMargin: 6
                left: parent.left
                leftMargin: 16

            }
            font.family: "PingFang SC"
            font.pixelSize: 14
            text: "今天"
            opacity: 1
        }
        onClicked: {
            _root.gotoToday()
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

二、切换日期按钮

切换日期按钮
代码如下:

    Rectangle{
        id: _lastAndNextMonthBtn
        color: "transparent"
        border.width: 1
        border.color: "#DCDFE5"
        anchors{
            top: parent.top
            topMargin: 16
            left: _resetBtn.right
            leftMargin: 12
        }
        radius: 4
        width: 65
        height: 32
        Button {
            text: "<"
            anchors{
                top: parent.top
                topMargin: 0
                left: parent.left
                leftMargin: 2
            }
            width: 32
            background: Rectangle {
                color: parent.hovered ? "#DCDFE5" : "#FFFFFF"
                anchors{
                    fill: parent
                    margins: 3
                    leftMargin: 0
                }
                radius: 4
            }
            font.family: "PingFang SC"
            font.pixelSize: 14
            onClicked: {
                _root.gotoLastMonth()
            }
        }
        Rectangle{
            color: "#DCDFE5"
            width: 1
            anchors{
                verticalCenter: parent.verticalCenter
                horizontalCenter: parent.horizontalCenter
            }
            height: parent.height - 8
        }
        Button {
            text: ">"
            anchors{
                top: parent.top
                topMargin: 0
                right: parent.right
                rightMargin: -1
            }
            width: 32
            background: Rectangle {
                color: parent.hovered ? "#DCDFE5" : "white"
                anchors{
                    fill: parent
                    margins: 3
                    leftMargin: 0
                }
                radius: 4
            }
            font.family: "PingFang SC"
            font.pixelSize: 14
            onClicked: {
                _root.gotoNextMonth()
            }
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72

三、显示当前年份月份日期的label

当前日期的label

代码如下:

    Text {
        width: 92
        height: 23
        anchors{
            top: parent.top
            topMargin: 20
            left: _lastAndNextMonthBtn.right
            leftMargin: 12
        }
        verticalAlignment: Qt.AlignVCenter
        font.family: "PingFang SC"
        text: currentDate_Year + "年" + currentDate_Month + "月"
        renderType: Text.NativeRendering
        font.pixelSize: 20
        font.bold: false
        antialiasing: true
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

暂且只写了年和月,后续会把日和今天都补充上


四、用于切换日月周的tabbar

在这里插入图片描述
代码如下:

Rectangle{
        width: 212
        height: 32
        anchors{
            top: parent.top
            topMargin: 16
            right: parent.right
            rightMargin: 16
        }
        border.color:  "#DCDFE5"
        border.width: 1
        radius: 6
        TabBar {
            id: _bar
            anchors.fill: parent
            anchors.margins: 1
            font.family: "PingFang SC"
            font.pixelSize: 14
            background: Rectangle {
                radius: 6
                color: "#FFFFFF"
            }

            Repeater {
                model: ["日", "周", "月"]

                TabButton {
                    text: modelData
                    contentItem: IconLabel {
                        text: parent.text
                        font: parent.font
                        color: parent.checked ? "#1962FF" : "#1F2329"
                    }
                    background: Rectangle{
                        radius: 4
                        anchors.fill: parent
                        anchors.margins: 3
                        anchors.bottomMargin: 5
                        color: parent.hovered ? "#DCDFE5" : parent.checked ? "#E8F2FF" : "#FFFFFF"
                    }
                }
            }
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

总结

先从最简单的开始,下一期模仿单天的日期显示如下:
单天的日期显示

—————————本文严禁转载—————————

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号