91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

QML 可以多選ComboBox的實現

發布時間:2020-08-17 04:43:23 來源:網絡 閱讀:3268 作者:a543589796 欄目:開發技術

    由于項目需要,需要設計一個可以多選的ComboBox,看了一下文檔,發現QML自帶的ComboBox確實無法多選。看了一下ComboBox的實現,發現彈出的下拉菜單是用Menu實現的,看來只能自己重寫了,畢竟Menu本身就是無法多選的!代碼不多,直接看實現吧!


    

import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4

Item{
    id:root
    implicitWidth: 150
    implicitHeight: 30
    property alias model: lv.model
    property var indexs: []
    property var m_text: ""

    function removeValue(arr,val) {      //刪除數組中指定的內容arr數組,val內容
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] == val) {
                arr.splice(i, 1)
                return arr;
            }
        }
    }
    Button{
        id: btn
        anchors.fill: parent
        Text{
            anchors.fill: parent
            anchors.margins: 5
            anchors.rightMargin: 30
            text: m_text
            horizontalAlignment: Text.AlignHCenter
            verticalAlignment: Text.AlignVCenter
            font.pointSize: 12
            clip: true
            elide: Text.ElideMiddle
        }

        onClicked: {
            sv.visible = !sv.visible;
        }
        Image{
            anchors.right: parent.right
            anchors.top: parent.top
            width: root.height
            height:root.height
            source:"換成自己下拉按鈕圖片"
        }
    }

    Component{
        id: m_del
        Rectangle{
            id:rect
            color:"white"
            implicitWidth: 150
            implicitHeight: 30
            property bool isSelect: false
            Text{
                anchors.fill: parent
                horizontalAlignment:Text.AlignHCenter
                verticalAlignment: Text.AlignVCenter
                font.pointSize: 15
                text: label
            }

            MouseArea{
                anchors.fill: parent
                hoverEnabled: true
                onEntered: {
                    if(!isSelect){
                        rect.color = "#CDDCFE";
                    }

                }
                onExited: {
                    if(!isSelect){
                        rect.color = "white"
                    }
                }
                onClicked: {
                    rect.isSelect = !rect.isSelect;
                    if(!rect.isSelect){         //取消某項
                        rect.color = "white"
                        //刪除文本中指定的字符串
                        var arr = m_text.split(",");
                        arr = removeValue(arr,label)
                        m_text = arr.join(",");
                        //刪除數組中記錄指定的內容
                        indexs = removeValue(indexs,index);
                    }
                    else{                       //選擇某項
                        rect.color = "#F9E977"
                        if(m_text.length == 0)
                        {
                            m_text += label;
                        }
                        else{
                            m_text += "," + label;
                        }
                        indexs.push(index)
                    }

                }
            }
        }
    }

    ScrollView{
        id:sv
        anchors.top:btn.bottom
        anchors.left: parent.left
        width: parent.width
        height: 300
        visible: false

        ListView{
            id: lv
            delegate:m_del
            anchors.fill: parent
        }
    }
}


    有個地方和官方的ComboBox有些區別,就是需要點擊按鈕才會將下拉列表收起來,不知道怎樣才能實現點擊其他位置,關閉下拉列表,有知道的朋友告訴我一聲,謝啦!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

册亨县| 鄂伦春自治旗| 临潭县| 陆川县| 绥江县| 丹寨县| 旌德县| 舒兰市| 修文县| 海宁市| 刚察县| 绍兴县| 安仁县| 东城区| 恩施市| 云安县| 佛学| 平原县| 娄底市| 资阳市| 吴堡县| 永寿县| 千阳县| 蒙自县| 泾源县| 拜城县| 渝中区| 麻阳| 冷水江市| 揭西县| 四子王旗| 逊克县| 清原| 连州市| 松原市| 秦皇岛市| 陵水| 齐齐哈尔市| 福海县| 社旗县| 和平区|