在通信界面经常出现,一个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);
}