QML Dialog mit konzentriert textField
arbeite ich an qt quick Anwendung, und ich will öffnen-dialog. In diesem dialog-Fenster TextField und will ich den Fokus auf diese textfiel nach dialog geöffnet ist.
Dieser code doesent Arbeit.
function newFolder() {
newFolderDialog.visible = true
newFolderDialog.open()
}
Dialog {
id: newFolderDialog
title: "New folder"
height: 150
width: 300
standardButtons: StandardButton.Ok | StandardButton.Cancel
Column {
anchors.fill: parent
Text {
text: "Name"
height: 40
}
TextField {
id: newFolderInput
width: parent.width * 0.75
focus: true
onFocusChanged: console.log("Focus changed " + focus)
}
}
onVisibilityChanged: {
if(visible === true){
newFolderInput.text = ""
newFolderInput.focus = true
}
}
}
Ausgabe in der Konsole ist
qml: Schwerpunkt false
qml: Fokus verändert wahr
qml: Schwerpunkt false
Es so Aussehen, dass irgendwie der Fokus geändert wird, nachdem ich den Fokus auf textField
- Dies funktioniert für mich in Qt 5.5. Der Fokus geht auf das TextField und es gibt vier Zeilen in der Konsole (false, true, false, true).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht die Funktion, wie es geschrieben ist. Aus den docs von
Dialog
für die Funktionopen()
:Gegeben, dass (es ist nicht das problem) scheint es, wie der Fokus wird ständig behauptet, die zwischen der dialog und die darin enthaltenen element. Je mehr Sie öffnen/schließen des
Dialog
, die weitere Auswertungen Auftritt. Ich kann nicht herausfinden, warum dies geschieht, gerade jetzt. Jedoch, können Sie einfach lösen das problem, indem Sie (1) loszuwerdenonVisibilityChanged
handler und (2) umschreibennewFolder()
. Der endgültige code umgeschrieben:Diese Weise können Sie öffnen Sie zuerst den dialog und setzen Sie den Fokus auf die richtige
Item
.newFolderInput.visible = true
stattnewFolderInput.focus = true
vielen Dank!focus
eingestellt isttrue
im dialog-Initialisierung.Dialog{focus : true}