QT qml TextField在第一次加载时未显示光标
问题描述:
我正在为Ubuntu和Windows开发QT交叉平板应用程序。我的问题很简单,但对QT来说有点新,我无法弄清楚。我有QML中的波纹管代码。我在我的qml中使用QT TextField
。当第一次加载QML时,我希望id_username
TextField应该在初始位置(0)默认显示光标,这不会发生。当我用鼠标单击相同的TextField时,光标在初始位置可见。我在做focus: true
这是没有用的。接下来,我添加了cursorVisible: true
,该游标在加载qml时可见,但我无法输入任何内容(输入任何内容),直到我点击TextField
。QT qml TextField在第一次加载时未显示光标
TextField
{
id: id_username
objectName: "id_username"
placeholderText: qsTr("username")
color: "#000000"
font.pixelSize: 20
cursorPosition: 0
selectByMouse: true
anchors.horizontalCenter: parent.horizontalCenter
focus: true
background: Rectangle
{
anchors.horizontalCenter: parent.horizontalCenter
implicitWidth: 200
border.color: id_username.focus ? "#000000": "#36404e"
border.width: id_username.focus ? 2: 1
radius: id_instruction.height/4
}
}
请让我知道我做错了什么。有没有从那里可以调用forceActiveFocus()
答
尝试这种在TextField
任何的onLoad功能:
onVisibleChanged: if(visible) id_username.forceActiveFocus()
参考链接 - http://www.qtcentre.org/threads/62655-How-to-gain-focus-onto-TextEdit-in-QML
QMetaObject :: invokeMethod中(m_pWindow-> findChild( “用户名”),“ forceActiveFocus“) 从上面的C++代码激活焦点工作正常。我们如何才能在QML中实现同样的事情。 (添加评论,因为它可能会给读者一些提示) –
Swapnil
_是否有任何onLoad函数?_ ['Component.onCompleted'](http://doc.qt.io/qt-5/qml-qtqml-component.html#完成信号) – m7913d
此代码适用于我,即控件专注于应用程序启动。你可以试试'Component.onCompleted:forceActiveFocus()'来强制这个。 – folibis