Qt+ VS实现多输入框键盘回车响应事件

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

结果:

Qt+ VS实现多输入框键盘回车响应事件_第1张图片

你可能感兴趣的:(Qt)