You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 05:32:35