qt中点击LineEditdit弹出软键盘的方法

如我前面博客关于Qt的Event Filter所讲,可以利用Event Filter进行事件过滤,又不懂的先看我前面那个博客:

http://blog.csdn.net/xwdpepsi/article/details/8757232

 

多的不说,直接上代码:

在.h文件加入:

public:

      KeyBoardDialog v_keyB;//键盘对话框

private slots:
    bool eventFilter(QObject *,QEvent *);    //注意这里软件盘相关

在.cpp文件中加入:

在构造函数中加入:

    ui->weightMaxlineEdit->installEventFilter(this);

在.cpp中添加eventFilter函数的实现代码

bool Widget::eventFilter(QObject *watched, QEvent *event)
{
    if (watched==ui->weightMaxlineEdit)         //首先判断控件(这里指 lineEdit1)
    {
        if (event->type()==QEvent::FocusIn)     //然后再判断控件的具体事件 (这里指获得焦点事件)
        {
            QString ret = v_keyB.returnValue();//
            ui->weightMaxlineEdit->setText(ret);
             //QMessageBox::information(this,tr("消息"),"复制完成");
             ui->weightMaxlineEdit->clearFocus();//防止weightMaxlineEdit重新获得焦点再一次激发时间
        }
    }

     return QWidget::eventFilter(watched,event);     // 最后将事件交给上层对话框
}

大功告成!如果有什么不懂,可直接留言

你可能感兴趣的:(qt中点击LineEditdit弹出软键盘的方法)