在通信界面經常出現,一個ui裏面,有很多輸入框,按下回車後,如何確定是剛剛輸入的那個輸入框的值發生了改變呢。
首先獲取當前光標位置
QWidget* fw = QApplication::focusWidget();
重寫鍵盤事件
xxx.h中:
protected:
virtual void keyPressEvent(QKeyEvent* evt);
xxx.cpp中:
構造函數添加:
this->grabKeyboard();
鍵盤事件:
void testFocusWgt::keyPressEvent(QKeyEvent* evt)
{
QWidget* fw = QApplication::focusWidget();
QString str,str1;
if (fw == ui.spb1)
{
str = "Widget: spb1 " + QString::number(ui.spb2->value());
}
else if (fw == ui.spb2)
{
str = "Widget: spb2 " + QString::number(ui.spb2->value());
}
else if (fw == ui.spb3)
{
str = "Widget: spb3 " + QString::number(ui.spb3->value());;
}
else if (fw == ui.spb4)
{
str = "Widget: spb4 " + QString::number(ui.spb4->value());;
}
else if (fw == ui.spb5)
{
str = "Widget: spb5 " + QString::number(ui.spb5->value());
}
else if (fw == ui.lineedit)
{
str = "Widget: lineedit " + ui.lineedit->text();
}
switch (evt->key())
{
case Qt::Key_Return:
case Qt::Key_Enter:
ui.textBrowser->append(str);
default:break;
}
QWidget::keyPressEvent(evt);
}