Qt::Popup 导致的巨坑

Qt::Popup的使用会导致QTextEdit,TextArea等文本编辑器的焦点丢失。

导致系统中文输入法切换为默认英文输入法。

 

问题剖析:只有当QTextEdit和设置Popup的窗口为兄弟关系时才会出现,

解决方案:1、调整UI避免出现兄弟关系;2、自定义widget,实现Popup效果

方案2步骤如下:

1、创建widget并设置置顶;

2、通过enterEvent(QEvent *event),leaveEvent(QEvent *event),focusInEvent(QFocusEvent *event)、focusOutEvent(QFocusEvent *event)这四个事件可实现;

3、增加容错,增加定时器,显示时启动,超时检测鼠标位置是否处于当前窗口,做出是否隐藏的操作;

 

你可能感兴趣的:(Qt,Qt,输入法丢失焦点)