Qt 5.12 TextArea焦点永远消失

时间:2019-01-19 21:01:10

标签: qt qml

当TextArea是ApplicationWindow的子级且标志设置为Qt.Popup时,无法通过鼠标单击或通过调用forceActiveFocus()来设置焦点。这是代码:

import QtQuick 2.12
import QtQuick.Controls 2.5
import QtQuick.Controls.Material 2.3

ApplicationWindow {
    id : mainWin
    visible: true
    width: 640
    height: 480
    title: qsTr("Bug reproduction scenario")

    Material.theme: Material.Dark

    TextArea {
        anchors.centerIn: parent
        placeholderText: qsTr("parent text")
    }

    Button {
        id : closeAppBtn
        anchors.bottom: parent.bottom
        anchors.horizontalCenter: parent.horizontalCenter
        text : qsTr("Close app")

        onClicked: {
            Qt.quit();
        }
    }

    ApplicationWindow {
        id : childWin
        width : mainWin.width/2
        height: mainWin.height/2
        visible: false

        Material.theme: Material.Dark

        x : mainWin.x + width/4
        y : mainWin.y + height/4

        flags : Qt.Popup

        TextArea {
            id : childTextArea
            anchors.centerIn: parent
            placeholderText: qsTr("child text")
        }

        Button {
            id : closeParentWinBtn
            anchors.bottom: parent.bottom
            anchors.horizontalCenter: parent.horizontalCenter
            text : qsTr("Close child win")

            onClicked: {
                childWin.close();
            }
        }

    }

    Button {
        text : qsTr("show another window")
        anchors.left : closeAppBtn.right
        anchors.leftMargin: closeAppBtn.width/2
        anchors.top : closeAppBtn.top
        onClicked: {
            if ( !childWin.visible ) {
                childWin.visible = true;
            }
        }
    }
}

通过鼠标单击或设置forceActiveFocus()都无法将焦点设置为childTextArea

将相同的组件放置在第一个窗口上,可以将焦点设置在该窗口上。而且如果您注释掉将标记设置为Qt.Popup的一切都可以。

这是已知的行为吗?如何在带有PopUp标志的ApplicationWindow中使用TextArea?

0 个答案:

没有答案