Javascript 如何在QML中使用forwardTo在TextInput上显示光标
我在屏幕上有两个元素,一个矩形和一个TextInput。当activefocus设置在矩形上并且我键入任何内容时,我需要将键入的输入获取到TextInput 为此,我使用了Javascript 如何在QML中使用forwardTo在TextInput上显示光标,javascript,qt,qml,Javascript,Qt,Qml,我在屏幕上有两个元素,一个矩形和一个TextInput。当activefocus设置在矩形上并且我键入任何内容时,我需要将键入的输入获取到TextInput 为此,我使用了curRect.Keys.forwardTo=[curTextbox] 它工作正常,但我也希望在焦点位于矩形上时看到光标 在上面QT的链接中,它说 它可以直接在脚本中设置,例如,如果使用KeyProxy 可能会将关键点转发给它,并且您希望它在执行此操作时看起来处于活动状态 发生(但实际上没有给予它积极的关注) 但我的情况并非
curRect.Keys.forwardTo=[curTextbox]代码>
它工作正常,但我也希望在焦点位于矩形上时看到光标
在上面QT的链接中,它说
它可以直接在脚本中设置,例如,如果使用KeyProxy
可能会将关键点转发给它,并且您希望它在执行此操作时看起来处于活动状态
发生(但实际上没有给予它积极的关注)
但我的情况并非如此
有人能给我解释一下为什么会这样,以及我如何实现我的目标,即即使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();
}
提前感谢。焦点的更改将重置光标可见属性。。。因此,当您单击rect
,焦点通过forceActiveRecord
从mytext
转移到它时,mytext.cursorVisible
会自动设置为false。如果要保持光标可见,应将其重置为true。这可以通过将您的rect.MouseArea.onClicked
更改为:
onClicked: {
rect.forceActiveFocus();
mytext.cursorVisible = true;
}
如果希望mytext
上的光标始终可见,还可以使用onCursorVisibleChanged
处理程序强制其为true。在mytext
对象中使用此选项:
onCursorVisibleChanged: {
if (!cursorVisible)
cursorVisible = true;
}
PS:我发布了一个新的答案,因为添加的细节已经改变了很多。。。我以后可能会删除上一个。对不起,这是不可能的。您可以始终输入|登录模糊,以便在输入中有一些内容。但它不会闪烁。在焦点上,你可以将光标移回管道所在的位置并将其删除。@Jakubbolomský你确定吗?文件似乎表明了这一点。不过我从来没有试过。我想把活动焦点转移到文本输入可能更容易,为什么你没有选择?你是如何尝试的?我可以用最直接的方式让它工作。请参阅我的答案以获取代码。提供代码,以便我们可以更好地帮助您。您好,请参阅我添加的示例代码