Qt同一个界面上多个QLineEdit焦点问题

同一个界面上有多个QLineEdit,每个QLineEdit输入时,点击QLineEdit自动弹出输入软键盘,开发过程中遇到了以下问题:
【备注1】:软键盘监听焦点改变信号,当焦点发生改变时触发焦点改变槽函数,在槽函数中判断当前焦点控件类型,是QLineEdit时弹出软键盘;

1、鼠标点击到QLineEdit后,弹出软键盘,点击关闭软键盘时发现软键盘不断的关闭弹出。
【解决方法】:
给QLineEdit的父窗口设置焦点策略,设置为点击获取焦点,否则会父窗口显示会直接将焦点in到QLineEdit中,就会死循环的in/out;

2、解决1后,鼠标点击进入QLineEdit中,软键盘显示,然后点击窗口的其他的QLineEdit,软键盘不消隐,但焦点一直在第一个QLineEdit上;
【解决方法】:
设置lineedit的焦点事件也是点击获取焦点;

3、解决1、2后,鼠标点击第二个以后的QLineEdit中后,鼠标跳入第一个QLineEdit中,与1、2有关,同样方法解决;

4、鼠标点击list中的项时,触发了QLineEdit的focusout事件,实际上应该还保持焦点在QLineEdit中得状态;
【解决方法】:
将软键盘的焦点策略设置设置为NoFocus即可。

this->setFocusPolicy(Qt::ClickFocus);
QList<QLineEdit*> allEdits = this->findChildren<QLineEdit*>();
foreach(QLineEdit* tmp, allEdits) {
    tmp->setFocusPolicy(Qt::ClickFocus);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值