首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何实现点击TextField外的区域使TextField失去焦点?

如何实现点击TextField外的区域使TextField失去焦点?
EN

Stack Overflow用户
提问于 2019-03-11 19:56:01
回答 1查看 2.2K关注 0票数 7
代码语言:javascript
运行
复制
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    TextField {
        id:textField
        width: 130
        height: 50
    }

    Button {
        anchors.right: parent.right
        text: "lose Focus"
    }
}

为什么单击按钮时textField不会失去焦点?如何实现点击TextField外的区域使TextField失去焦点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-11 20:32:47

使用现有代码的最简单方法是在单击按钮时在另一项上执行force active focus

代码语言:javascript
运行
复制
Button {
    anchors.right: parent.right
    text: "lose Focus"
    onClicked: forceActiveFocus()
}

要使TextField在单击外部区域时失去焦点,可以使用MouseArea执行类似的操作

代码语言:javascript
运行
复制
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    MouseArea {
        anchors.fill: parent
        onClicked: forceActiveFocus()
    }

    TextField {
        id: textField
        width: 130
        height: 50
    }
}

此项目需要低于场景中的其他项目(即具有较低的Z值)。您还可以将其设置为其他项的父项,以实现以下目的:

代码语言:javascript
运行
复制
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    MouseArea {
        anchors.fill: parent
        onClicked: forceActiveFocus()

        TextField {
            id: textField
            width: 130
            height: 50
        }
    }
}

如果您使用的是Qt Quick Controls 2,则可以在例如Pane上使用focusPolicy属性

代码语言:javascript
运行
复制
import QtQuick 2.7
import QtQuick.Controls 2.0

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Pane {
        anchors.fill: parent
        focusPolicy: Qt.ClickFocus
    }

    TextField {
        id: textField
        width: 130
        height: 50
    }
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55101332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档