Flat风格的Qml轮选框

基于Qml的SpinBox控件修改而成。

demo.gif

轮选框代码

import QtQuick 2.0
import QtQuick.Controls 2.0
import QtGraphicalEffects 1.0

SpinBox {
    id: root

    property color color: "#3498DB"

    value: 50
    editable: true

    contentItem: TextInput {
        text: root.value

        font.pixelSize: 15
        font.family: "Arial"
        font.weight: Font.Thin

        horizontalAlignment: Qt.AlignHCenter
        verticalAlignment: Qt.AlignVCenter

        readOnly: !root.editable
        validator: root.validator
    }

    up.indicator: Rectangle {
        x: root.mirrored ? 0 : parent.width - width
        implicitWidth: 37
        implicitHeight: implicitWidth
        color: root.up.pressed ? "#EBEDEF" : root.color

        Text {
            text: "+"
            anchors.fill: parent
            color: root.up.pressed ? root.color : "white"

            font.bold: true
            font.pixelSize: root.font.pixelSize * 2
            fontSizeMode: Text.Fit

            horizontalAlignment: Text.AlignHCenter
            verticalAlignment: Text.AlignVCenter
        }
    }

    down.indicator: Rectangle {
        x: root.mirrored ? parent.width - width : 0
        implicitWidth: root.up.indicator.implicitWidth
        implicitHeight: implicitWidth
        color: root.down.pressed ? "#EBEDEF" : root.color

        Text {
            text: "-"
            anchors.fill: parent
            color: root.down.pressed ? root.color : "white"

            font.bold: true
            font.pixelSize: root.font.pixelSize * 2
            fontSizeMode: Text.Fit

            horizontalAlignment: Text.AlignHCenter
            verticalAlignment: Text.AlignVCenter
        }
    }

    background: Rectangle {
        implicitWidth: 138
        border.color: "#EBEDEF"

        layer.enabled: root.hovered
        layer.effect: DropShadow {
            id: dropShadow
            transparentBorder: true
            color: "#EEF2F7"
            samples: 8 
        }
    }
}

轮选框样式代码

main_page2.png

GridLayout {
    width: root.width
    rows: 3
    columns: 3

    Repeater {
        model: ["#727CF5", "#0ACF97", "#F9375E",
                "#FFBC00", "#2B99B9", "#5A6268",
                "#EEF2F7", "#212730", "#3498DB"]

        SpinBox {
            value: Math.random() * 10
            color: modelData
        }
    }
}
  • 更多精彩内容请关注公众号Qt君
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值