首页 > 解决方案 > 如何检测何时在 TextEdit 组件中获得焦点

问题描述

我已经搜索了文档以找到一个信号,以便在TextEdit组件被聚焦时挂钩,以便我可以进行一些格式化,但我找不到任何东西。我有一个TextEdit允许用户编辑数字的组件,但在不关注时使用区域设置打印数字,如下所示:

TextEdit {
    text: object.number.toLocaleString()
    onFocus: { text = object.number; }
    onEditingFinished: {
        // Validation
        object.number = parseInt(text);
    }
}

有什么我错过的吗?

标签: qtqmlqt5

解决方案


这是你想做的吗?我使用 onPropertyChanged 通过创建 2 个文本编辑字段来实现它,这样我就可以将焦点从一个更改为另一个。TextEdit在这里你会看到的是当你在s之间来回点击时文本的变化

import QtQuick 2.7
import QtQuick.Window 2.0

Window
{
    id: mainWindow
    width: 800
    height: 800
    visible: true

    TextEdit {
        id: t1
        text: "defaut"    
        onFocusChanged: {
            if(focus)
                text = "focused"
            else
                text = "not focused"
        }
    }

    TextEdit {
        anchors.top: t1.bottom
        text: "default2"    
        onFocusChanged: {
            if(focus)
                text = "focused"
            else
                text = "not focused"
        }
    }
}

推荐阅读