gpt4 book ai didi

javascript - 如何在 QML 中使用forwardTo 在 TextInput 上显示光标

转载 作者:行者123 更新时间:2023-12-02 17:31:36 30 4
gpt4 key购买 nike

我在屏幕上有两个元素,一个矩形和一个 TextInput。当事件焦点设置在矩形上并且我键入任何内容时,我需要将键入的输入获取到 TextInput

为此,我使用了 curRect.Keys.forwardTo = [curTextbox];

它工作正常,但我还想在焦点位于矩形上时看到光标。

http://qt-project.org/doc/qt-4.8/qml-textinput.html#cursorVisible-prop

在上面的 QT 链接中,它说

that It can be set directly in script, for example if a KeyProxy might forward keys to it and you desire it to look active when this happens (but without actually giving it active focus).

但在我的例子中,这种情况并没有发生。

任何人都可以向我解释为什么会这样以及我如何实现我的目标,即即使当 activeFocus 位于矩形上时也显示光标?

即使在输入文本时显示光标也很好。

更新:

import QtQuick 1.0

FocusScope{

width: 400
height: 400
TextInput {Rectangle{anchors.fill: parent;color:"#66ff0000"}
id: mytext
anchors.top:parent.top
cursorVisible: true
width: rect.width
MouseArea{
anchors.fill: parent;
onClicked: mytext.forceActiveFocus()
}
Keys.onDownPressed: {
mytext2.forceActiveFocus();
}
}
TextInput {Rectangle{anchors.fill: parent;color:"#66ff0000"}
id: mytext2
anchors.top:mytext.bottom
cursorVisible: true
width: rect.width
MouseArea{
anchors.fill: parent;
onClicked: mytext2.forceActiveFocus()
}

Keys.onUpPressed: {
mytext.forceActiveFocus();
}
}
Rectangle {
id:rect
width: 360
height: 360
color:rect.activeFocus?"#6600ff00":"#660000ff"
focus: true
Keys.forwardTo: mytext
MouseArea{
anchors.fill: parent;
onClicked: rect.forceActiveFocus()
}
}
Component.onCompleted: rect.forceActiveFocus();
}

提前致谢。

最佳答案

焦点的变化会重置 cursorVisible 属性...因此,当您单击 rect 时,焦点会从 mytext 转移到通过 forceActiveRecordmytext.cursorVisible 自动设置为 false。如果你想保持光标可见,你应该将其重置为 true。这可以通过将 rect.MouseArea.onClicked 更改为以下内容来完成:

        onClicked: {
rect.forceActiveFocus();
mytext.cursorVisible = true;
}

如果您希望 mytext 上的光标始终可见,您还可以使用 onCursorVisibleChanged 处理程序强制其为 true。在您的 mytext 对象中使用它:

    onCursorVisibleChanged: {
if (!cursorVisible)
cursorVisible = true;
}

PS:我正在发布一个新答案,因为添加的详细信息已经改变了很多......我可能会稍后删除之前的答案。

关于javascript - 如何在 QML 中使用forwardTo 在 TextInput 上显示光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23013975/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com