2024年4月28日发(作者:)

Qt实现数字键盘

要在多个控件中输入内容,难点在于区分控件。每个人的思路不同实现方式也不同,

这是我的两种实现方式:

1、 重写焦点事件void focusInEvent(QFocusEvent *); 鼠标点击控件时会进入控

件的焦点事件,重写此事件可以知道用户点击了那个控件,来区分输入的对象。

2、 添加事件过滤器bool eventFilter(QObject *obj, QEvent *ev); 过滤出需要的

事件信息,来区分要在那个控件中输入信息。

下面以QlineEdit为例来实现数字键盘,下图是UI界面,使用Qt Designer 进行界

面设计。

左侧是输入栏,当点击数字键盘时,在里面输入内容。数字键盘下面的输入栏在程序

中加载显示的。当点击确认按钮时,右侧显示栏输入的内容。

下面是代码实现的内容

1、重写焦点事件

void MyLineEdit::focusInEvent( QFocusEvent *ev )

{

emit EditinEvent();//发送自定义信号

__super::focusInEvent(ev);

}

2、事件过滤器

//把需要按键输入的QLineEdit加入事件过滤器

it_1->installEventFilter(this);

it_2->installEventFilter(this);

it_3->installEventFilter(this);