QT qml TextField在第一次加载时未显示光标

问题描述:

我正在为Ubuntu和Windows开发QT交叉平板应用程序。我的问题很简单,但对QT来说有点新,我无法弄清楚。我有QML中的波纹管代码。我在我的qml中使用QT TextField。当第一次加载QML时,我希望id_username TextField应该在初始位置(0)默认显示光标,这不会发生。当我用鼠标单击相同的TextField时,光标在初始位置可见。我在做focus: true这是没有用的。接下来,我添加了cursorVisible: true,该游标在加载qml时可见,但我无法输入任何内容(输入任何内容),直到我点击TextFieldQT 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()

+0

QMetaObject :: invokeMethod中(m_pWindow-> findChild ( “用户名”),“ forceActiveFocus“) 从上面的C++代码激活焦点工作正常。我们如何才能在QML中实现同样的事情。 (添加评论,因为它可能会给读者一些提示) – Swapnil

+1

_是否有任何onLoad函数?_ ['Component.onCompleted'](http://doc.qt.io/qt-5/qml-qtqml-component.html#完成信号) – m7913d

+1

此代码适用于我,即控件专注于应用程序启动。你可以试试'Component.onCompleted:forceActiveFocus()'来强制这个。 – folibis

尝试这种在TextField任何的onLoad功能:

onVisibleChanged: if(visible) id_username.forceActiveFocus() 

参考链接 - http://www.qtcentre.org/threads/62655-How-to-gain-focus-onto-TextEdit-in-QML