2017-09-07 46 views
0

我正在爲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

回答

相關問題