Свойство, которое позволяет выделять, имеет значение visualFocus
, и, если документы проверяются:
visualFocus: bool [только для чтения]
Это свойство определяет, имеет ли элемент управления визуальный фокус. Это свойство имеет значение true, когда элемент управления имеет активную фокусировку, и причиной фокусировки является либо Qt.TabFocusReason, Qt.BacktabFocusReason, либо Qt.ShortcutFocusReason.
В общем, для визуализации фокусировки клавиш этосвойство предпочтительнее Item :: activeFocus.Это обеспечивает фокусировку клавиш только при взаимодействии с клавишами, но не при взаимодействии с помощью прикосновения или мыши.
См. Также focusReason и Item :: activeFocus.
(выделениемой)
Таким образом, вы должны использовать forceActiveFocus()
, но передавая одну из указанных причин, потому что, если вы не передаете аргументы, причина - Qt :: OtherFocusReason, как указано в документации:
forceActiveFocus (причина)
Это перегруженная функция.
Включает активную фокусировку на элементес указанной причиной.
Этот метод устанавливает фокус на элемент и гарантирует, что все объекты-предки FocusScope в иерархии объектов также получают фокус.
Этот метод был представлен в Qt 5.1.
См. Также activeFocus и Qt :: FocusReason.
forceActiveFocus ()
ForcesАктивный фокус на элемент.
Этот метод устанавливает фокус на элемент игарантирует, что все предшествующие объекты FocusScope в иерархии объектов также получают фокус.
Причиной изменения фокуса будет Qt :: OtherFocusReason .Используйте перегруженный метод, чтобы указать причину фокусировки, чтобы обеспечить лучшую обработку изменения фокуса.
См. Также activeFocus.
(выделение мое)
Итак, решение:
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
RowLayout{
anchors.fill: parent
Button{
id: button1
text: "Button1"
}
Button{
text: "Button2"
}
Button{
text: "Button3"
}
}
Component.onCompleted: <b>button1.forceActiveFocus(Qt.TabFocusReason)</b>
}