Qt/QML学习-自定义CheckBox

2024-07-19 1294阅读

QML学习

  • 自定义CheckBox例程
  • 视频讲解
  • 代码

    main.qml

    import QtQuick 2.15
    import QtQuick.Window 2.15
    import QtQuick.Controls 2.15
    Window {
        width: 640
        height: 480
        visible: true
        title: qsTr("Hello World")
        CheckBox {
            id: checkBox
            font.pointSize: 30
            text: "放假当宅宅"
            tristate: true
            onCheckStateChanged: {
                switch (checkState) {
                case Qt.Checked:
                    logText.text = text+":\nChecked"
                    break
                case Qt.PartiallyChecked:
                    logText.text = text+":\nPartiallyChecked"
                    break
                default:
                    logText.text = text+":\nUnChecked"
                    break
                }
            }
            background: Rectangle {
                color: "blue"
                width: checkBox.implicitWidth
            }
            contentItem: Text {
                text: checkBox.text
                color: "yellow"
                font.pixelSize: 30
                horizontalAlignment: Text.AlignHCenter
                verticalAlignment: Text.AlignVCenter
                leftPadding: checkBox.indicator.width
            }
            indicator: Rectangle {
                color: "transparent"
                width: image.width
                height: checkBox.height
                Image {
                    id: image
                    anchors.centerIn: parent
                    height: checkBox.height
                    source: checkBox.getCheckState()
                    fillMode: Image.PreserveAspectFit
                }
            }
            function getCheckState() {
                switch (checkBox.checkState) {
                case Qt.Checked:
                    return "qrc:/Checked.png"
                case Qt.PartiallyChecked:
                    return "qrc:/PartiallyChecked.png"
                default:
                    return "qrc:/UnChecked.png"
                }
            }
        }
        Rectangle {
            anchors.top: checkBox.bottom
            width: logText.width
            height: logText.height
            color: "yellow"
            Text {
                id: logText
                font.pointSize: 30
                text: "点赞+关注"
            }
        }
    }
    

    演示

    • 视频讲解
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]