QT按钮点击切换QLineEdit焦点(含代码)

正常来说,点击QLineEdit控件后,焦点就进入该控件,可以进行键盘文字输入了。但某些场合可能需要通过按钮来点击,切换焦点所处的QLineEdit,如图
在这里插入图片描述
通过点击按钮,切换焦点所在的控件,这是下面讨论的问题

好,首先要明白QLineEdit的两个接口,setFocus();和hasFocus();,前者是设置焦点,能将焦点切换到具体的QLineEdit,后者是获取焦点,返回bool值。

一开始的想法是,通过遍历获取当前QLineEdit的焦点标志,判断按钮点击后要对哪一个QLineEdit设置焦点。但问题是,点击按钮的那一刻,会将焦点切换到按钮本身上,从而导致所有的QLineEdit都失去了焦点。

所以,我们需要在QLineEdit处于焦点的时候,外部对其有一个记录,以免像上面这样被覆盖。因此,QLineEdit需要自定义一下,这里在它的focusInEvent事件中重载一下。

mylineedit.h

#ifndef MYLINEEDIT_H
#define MYLINEEDIT_H

#include <QLineEdit>
#include <QDebug>


class myLineEdit : public QLineEdit
{
   
    Q_OBJECT

public:
    myLineEdit(QWidget *parent = nullptr);
    ~myLineEdit();

    void set_num(int num_);

protected:
    void focusInEvent(QFocusEvent *) override;
    int num = -1;

signals:
    void sig_lineedit_num(int num);

};

#endif // MYLINEEDIT_H

mylineedit.cpp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值