处理qml 加载到quickQwidget中没办法切换输入法的问题

处理qml 加载到quickQwidget中没办法切换输入法的问题

直接上代码
class custom_widget :public QQuickWidget {

public:
    using Supper = QQuickWidget;
    custom_widget() {
        connect(quickWindow(), &QQuickWindow::activeFocusItemChanged, this, &custom_widget::onActiveFocusItemChanged);
    }
protected:
    //禁用alt + F4 关闭窗口的功能
    bool nativeEvent(const QByteArray&, void* message, long*) override
    {
        MSG* msg = (MSG*)message;
        if (WM_SYSKEYDOWN == msg->message && VK_F4 == msg->wParam)
            return true;

        return false;
    }
public slots:
    //槽函数,当切换焦点的时候  将所有的QQuickWidget的焦点都清除掉,就可以实现切换输入法的问题
    //由于我这边是有了dock_widget,使用Quickview控件,会出现拖动QML白的问题  所有只能重写QQuickWidget  来修改不能切换输入法的问题
    void onActiveFocusItemChanged() {
        QQuickItem* pFocusItem = quickWindow()->activeFocusItem();
        if (pFocusItem && pFocusItem->inherits("QQuickTextInput")) {
            disconnect(quickWindow(), &QQuickWindow::activeFocusItemChanged, this, &custom_widget::onActiveFocusItemChanged);
            clearFocus();
            pFocusItem->forceActiveFocus();
        }
    }
};
新问题

会导致的问题是 第一次点击进入的时候 输入框不能输入内容 具体是什么原因还在调查,下面是我已知的一些结果

经过分析发现,是因为pFocusItem->forceActiveFocus();设置了控件的焦点 ,在QQuickItem 中的隐藏属性控件Quickinputtext没有被设置到可输入的状态,由于Quickinputtext是qt 没有公布的类 暂时没办法访问,所以应该暂时没有通过简单的方式解决。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值