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);
}

結果:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章