简述
在博主模仿酷狗播放器的过程中,遇见了一个如标题一样的问题,具体想实现的效果大概如下图。
由于未添加QListwidgetItem所以下框为空白
在这里诉说一下博主需要实现的效果,在QLineEdit(也就是搜索框)文本改变的时候出现QListWidget,在鼠标焦点不在QLineEdit时,隐藏QListWidget
实现
其实想要实现文本改变出现对QListwidget,只需要连接QLineEdit的textchanged信号,再在槽函数中实现相关操作
connect(searchLineEdit, &QLineEdit::textChanged, this, &TopWidget::slt_searchInformationShow);
//由于本程序的位置,大小不固定,所以每次都需要动态检测搜索框位置
QPoint pos = searchLineEdit->pos();
pos.setY(pos.y() + searchLineEdit->height());
searchList->setGeometry(pos.x(), pos.y(),searchLineEdit->width(),200);
searchList->show();
关于隐藏QListWidget的操作,只需要注册一下QLineEdit的事件过滤器
实现相关操作即可
//注册事件过滤器
searchLineEdit->installEventFilter(this);
if(event->type() == QEvent::Leave)
{
if (obj == static_cast<QObject*>(searchLineEdit))
{
searchList->hide();
return true;
}
}
return QWidget::eventFilter(obj, event);