
有三个输入框,我希望点击第二个lineEdit时小键盘出来,接着点击第三个lineEdit,继续输入
键盘那边通过信号传参过来了
第二,三个lineEdit为添加EventFilter
ui->lineEdit_2->installEventFilter(this);
ui->lineEdit_3->installEventFilter(this);
bool From::eventFilter(QObject* watched,QEvent* event)
{
if(watched == ui->lineEdit_2)
{
if (event->type()==QEvent::FocusIn)
{
keypanel = new Keyboard;
keypanel->show();
ui->lineEdit_2->setFocus();
connect(keypanel,SIGNAL(letterInput(int)),this,SLOT(set_vaule(int)));
connect(keypanel,SIGNAL(signal_delete()),this,SLOT(delete_data()));
connect(keypanel,SIGNAL(signal_dot()),this,SLOT(dot_data()));
connect(keypanel,SIGNAL(signal_hide()),this,SLOT(hide_keyboard()));
}
if (event->type()==QEvent::FocusOut)
{
ui->lineEdit_2->clearFocus();
keypanel->close();
}
}
.....
return QWidget::eventFilter(watched,event);
}
槽函数
void From::set_vaule(int a)
{
QString tmp;
tmp = tmp.number(a,10);
QString temp = ui->lineEdit_2->text()+tmp;
ui->lineEdit_2->setText(temp);
}
....
现在打开程序,光标在第一个lineEdit处,我再点击第二个lineEdit_2时,键盘闪一下就没了,这是怎么回事?