Qt 6.5:无法通过Qt.ClickFocus让ScrollView获焦,点击时TextField无法失焦
问题:点击ScrollView无法让TextField失去焦点(Qt 6.5)
我希望点击ScrollView区域时让TextField失去焦点,但设置focusPolicy: Qt.ClickFocus后,ScrollView无法获得焦点。使用Qt.TabFocus时功能完全正常,怀疑有元素干扰了点击事件,这是Qt 6.5的bug吗?
原始测试代码
import QtQuick import QtQuick.Controls.Universal ApplicationWindow { visible: true width: 600 height: 400 ScrollView { anchors.fill: parent focusPolicy: Qt.ClickFocus TextField { id: textField implicitWidth: 400 implicitHeight: 50 } } }
解决方法
通过添加TapHandler强制让ScrollView的内容容器获取焦点,以此触发TextField失去焦点。同时使用ColumnLayout避免手动设置contentWidth和contentHeight:
import QtQuick import QtQuick.Controls.Universal import QtQuick.Layouts ApplicationWindow { visible: true width: 600 height: 400 ScrollView { id: scrollView anchors.fill: parent ColumnLayout { id: columnLayout TextField { Layout.preferredWidth: 400 } } TapHandler { onTapped: columnLayout.forceActiveFocus() } } }
内容的提问来源于stack exchange,提问作者Yuw Ownly
相关产品推荐
相关产品推荐

