Qt/QML学习-ComboBox

QML学习

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("ComboBox")

    ComboBox {
        id: comboBox
        // 列表项数据模型
        model: ListModel {
            ListElement { name: "点赞"; color: "black"}
            ListElement { name: "关注"; color: "red" }
            ListElement { name: "投币"; color: "blue" }
        }
        // 显示文本对应的数据模型属性
        textRole: "name"
        // 选项改变
        onCurrentTextChanged: {
            logText.text = currentText
        }
        // ComboBox内容视图
        contentItem: Text {
            font.pointSize: 30
            text: comboBox.displayText
            color: "green"
            leftPadding: 10
        }
        // ComboBox背景视图
        background: Rectangle {
            color: "yellow"
            border.width: 1
        }
        // 选项视图代理
        delegate: ItemDelegate {
            width: comboBox.width
            height: comboBox.height
            // 选项内容视图
            contentItem: Text {
                text: name
                font.pointSize: 30
                color: model.color
                verticalAlignment: Text.AlignVCenter
            }
            // 选项背景视图
            background: Rectangle {
                color: comboBox.highlightedIndex === index?
                           "yellow": "transparent"
            }
        }
        // 指示器
        indicator: Rectangle {
            x: comboBox.width - width
            y: 0
            width: 50
            height: comboBox.height
            color: "transparent"
            Canvas {
                anchors.fill: parent
                onPaint: {
                    var ctx = getContext('2d')
                    ctx.beginPath()
                    ctx.moveTo(10, 10)
                    ctx.lineTo(40, 10)
                    ctx.lineTo(25, height-10)
                    ctx.closePath()
                    ctx.fillStyle = "blue"
                    ctx.fill()
                    ctx.strokeStyle = "black"
                    ctx.lineWidth = 2
                    ctx.stroke()
                }
            }
        }
    }

    // 演示
    Text {
        id: logText
        anchors.left: comboBox.right
        anchors.leftMargin: 20
        font.pointSize: 30
    }
}

演示

相关推荐

  1. Qt/QML学习-ComboBox

    2024-07-16 09:30:05       29 阅读
  2. C# comboBox

    2024-07-16 09:30:05       32 阅读
  3. Wpf DataGrid ComboBox

    2024-07-16 09:30:05       32 阅读
  4. WPF ComboBox限制输入长度

    2024-07-16 09:30:05       50 阅读
  5. WPF —— ComboBox控件详解

    2024-07-16 09:30:05       34 阅读
  6. MFC:组合框ComboBox的使用

    2024-07-16 09:30:05       34 阅读
  7. Qt实现comboBox的初试化

    2024-07-16 09:30:05       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 09:30:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 09:30:05       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 09:30:05       58 阅读
  4. Python语言-面向对象

    2024-07-16 09:30:05       69 阅读

热门阅读

  1. 【精简版】jQuery 中的 Ajax 详解

    2024-07-16 09:30:05       24 阅读
  2. 力扣 144题 二叉树的前序遍历 记录

    2024-07-16 09:30:05       25 阅读
  3. ref 和 reactive 区别

    2024-07-16 09:30:05       25 阅读
  4. vue + TinyMCE实现富文本编辑器

    2024-07-16 09:30:05       25 阅读
  5. 如何在本网站中显示所有Logistic回归超参数

    2024-07-16 09:30:05       25 阅读
  6. NIO(NO-Blocking I/O)模型

    2024-07-16 09:30:05       24 阅读
  7. 等保2.0 测评 linux服务器加固 基本安全配置手册

    2024-07-16 09:30:05       28 阅读
  8. PolarDB MySQL与RDS以及社区MySQL有什么区别?

    2024-07-16 09:30:05       21 阅读
  9. Memcached开发(二):安装与配置

    2024-07-16 09:30:05       21 阅读