我使用的是Qt5.7.1 在iOS中,长按QML TextInput会显示带有选择/选择全部/粘贴项目的本机上下文菜单。如何阻止此菜单显示,同时允许TextInput仍可编辑。
如果我使用Qt 5.6.2,TextInput不会显示这样的菜单。
使用下面的代码,我可以阻止上下文菜单显示在5.7.1中,但是光标位置总是在文本末尾结束。
import QtQuick 2.5
import QtQuick.Window 2.0
Rectangle
{
color: "yellow"
width: 100; height: 100
Rectangle {
color: "white"
width: 100; height: 50
anchors.centerIn: parent
TextInput{
id:tip
text:"test123"
anchors.fill: parent
onActiveFocusChanged: {
console.log("tip onActiveFocusChanged")
}
onCursorPositionChanged: {
console.log("onCursorPositionChanged:" + tip.cursorPosition )
}
MouseArea {
id:ma
anchors.fill: parent
propagateComposedEvents:true
onPressed: {
console.log("ma onPressed:" + tip.cursorPosition )
mouse.accepted = true
tip.focus = false;
}
onClicked: {
console.log("ma onClicked:" + tip.cursorPosition )
mouse.accepted = false
tip.forceActiveFocus();
}
onPressAndHold:{
console.log("ma onPressAndHold")
mouse.accepted = true
tip.focus = false;
}
}
}
}
}
我想知道是否有更好的方法可以做到这一点,并且还有一个完全可编辑的TextInput。
答案 0 :(得分:0)
我可以通过下面的黑客停止编辑菜单显示在ios上:\
import QtQuick 2.5
import QtQuick.Window 2.0
Rectangle
{
color: "yellow"
width: 100; height: 100
Rectangle {
color: "white"
width: 100; height: 50
anchors.centerIn: parent
TextInput{
id:tip
text:"test123"
anchors.fill: parent
MouseArea {
id:ma
anchors.fill: parent
propagateComposedEvents:true
onPressed: {
mouse.accepted = false
tip.focus = false
tip.focus = true
}
}
onSelectedTextChanged:tip.deselect()
}
}
}