背景:
最近的一个实验要求实现一个小功能,主要是用到了Qt中的事件过滤器。
功能描述
当用户删除输入框中的内容时,输出框中的内容需要随之删除的功能。
解决方案:
以下将列出简单的步骤,以及我遇到的一些问题。
1、安装事件过滤器
ui->displayLineEdit->installEventFilter(this);
2、重写eventFilter函数
bool Widget::eventFilter(QObject *obj, QEvent *e)
{
if(obj==ui->displayLineEdit)
{
QString value=ui->displayLineEdit->text();//获取输入框中的值
if(value=="")//判断是否为空
{
ui->descriptionTextBrowser->clear();//若为空则清除输出框中的内容
}
}
}
遇到了两个问题:
1、安装过滤器的控件与实际实际执行过滤操作的控件不一样
因为该实验中有两个输入控件,因为不小心将两个控件的名字搞混了,导致无法实现过滤。
所以编程时要仔细检查控件名是否写对。
2、我尝试过通过监听键盘事件来实现该功能。
但是我后来发现keypress监听的是enter键,而我所使用的是backspace键。
若有错误,恳请各位大佬批评指正。