双击后如何打开新窗口使其变为活动状态?

时间:2018-11-16 06:23:56

标签: qt qml qt5 qtquick2

我正在尝试做一个看似简单的事情:在一个窗口中双击后,我想打开第二个顶层(非模态)窗口并激活它。但是,无论我做什么,第二个窗口都不会激活,焦点仍保留在第一个窗口中。

这是一个最小的示例:

import QtQuick 2.11
import QtQuick.Controls 2.4

ApplicationWindow {
    id: root
    height: 480
    width: 640
    visible: true

    MouseArea {
        anchors.fill: parent
        onDoubleClicked: {
            var w = otherWindowComponent.createObject(root)
            w.show()
            w.requestActivate() // same effect when removed
        }
    }

    Component {
        id: otherWindowComponent
        ApplicationWindow {
            id: child
            width: 400
            height: 300

            Rectangle {
                color: "blue"
                width: 100
                height: 100
                focus: true
            }
        }
    }
}

我想念什么吗?谢谢!

UPD:一些额外的信息:

  1. 我使用的是Windows 10 64位版本
  2. 当我将onDoubleClicked替换为onClicked时,窗口将按预期方式激活。

1 个答案:

答案 0 :(得分:1)

也许是Windows的错误,在Linux中它可以正常工作。因此,一种解决方法是在打开窗口后的几毫秒内使用计时器设置焦点。