如我前面博客關於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); // 最後將事件交給上層對話框
}
大功告成!如果有什麼不懂,可直接留言