QT ComboBox绘制在错误的位置

时间:2018-11-27 19:48:54

标签: qt qml qt5 qt-quick qt5.6

Ubuntu 18.04上的QT 5.6.2 我有一个非常简单的ComboBox

import QtQuick.Controls 1.4
    Row{//box
        Item{width: 0.02 * root.width;  height: 1}//space
        spacing: 0.02 * root.width

        ComboBox{//Recording type
            id: typeCombo
            anchors.bottom: parent

            currentIndex: 2
            model: ["TOWING", "PRE_FLIGHT_CHECKS", "FLIGHT"]
            width: 0.4 * root.width;  height: 0.15 * root.height
        }

        Rectangle{
            id: rectangle

            width: 0.5 * root.width;  height: 0.15 * root.height
            border{color: 'gray'; width: 0.1 * rectangle.height}
            radius: 0.18 * rectangle.height
            clip: true

            onEnabledChanged:  if(!enabled)  textInput.text = ''
            opacity: enabled? 1: 0.3
            visible: ddsObject.isRecorderStation

            TextInput{
                id: textInput
                anchors.centerIn: parent
                font.pixelSize: 0.6 * rectangle.height
                maximumLength: 100
            }

            MouseArea{
                anchors.fill: parent
                onPressed:  parent.border.color = 'magenta'
                onReleased: parent.border.color = 'gray'
                onCanceled:{parent.border.color = 'gray';  execute()}
                onClicked:  execute()
                function execute(){textInput.forceActiveFocus(Qt.OtherFocusReason)}
            }
        }
    }

但是,单击时它会绘制在应用程序窗口的右下角。框架中也有此消息:

QmlViewGadgetWidget(0x563561aa31e0) must be a top level window

任何想法如何解决?我希望下拉菜单会显示在ComboBox元素的正下方。


可能与this question相关。但是,答案说这个问题早已解决。

1 个答案:

答案 0 :(得分:0)

您需要将ComboBox锚定到您的根组件。您可以通过设置属性anchors.centerIn: root

来实现。