首页 > 解决方案 > QML ComboBox 弹出问题

问题描述

我最近使用了很多组合框,但是在特定的弹出窗口中有一个问题ComboBox,我无法找到以下代码的确切问题:

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    ComboBox{
        id:comboNum
        width:parent.width * 0.30
        height:parent.height * 0.15
        model: ["12","23","78","23","45","70"]
        currentIndex: 0

        popup: Popup{
            id:popup
            y: comboNum.height - 1
            width: comboNum.width
            height: comboNum.height * 2
            padding: 1

            contentItem: ListView {
                id: listview
                implicitHeight: popup.height
                clip: true
                model:comboNum.delegateModel
                currentIndex: comboNum.highlightedIndex
                interactive: true
                highlightMoveDuration: 0
                boundsBehavior: ListView.StopAtBounds

                ScrollBar.vertical:ScrollBar {}
            }
        }
    }
}

弹出窗口没有显示所有元素,我使用的是 QT 5.9.1。

标签: qtqmlqtquick2qcombobox

解决方案


查看自定义文档,我可以看到它根据弹出窗口是否可见有条件地设置模型。对您的代码段执行相同操作使其对我有用:

model: popup.visible ? comboNum.delegateModel : null

但是,Default 样式的实现ComboBox并没有这样做,所以我不确定为什么在你的情况下它是必要的。


推荐阅读