bool XXX::eventFilter(QObject * watched, QEvent * event)
{
return QWidget::eventFilter(watched, event);
}
QT要想获取焦点时全选或清空内容,需要用到 eventFilter() ;
说到获取焦点时,一般想到的是 QEvent::FocusIn ,
if (watched == ui.userName_lineEdit)
{
if (event->type() == QEvent::FocusIn)
{
ui.userName_lineEdit->selectAll();
}
}
但是实践发现,这种只能在 tab 键切换的时候才有效,鼠标点击是没效果的。这时候就要
if (watched == ui.userName_lineEdit)
{
if (event->type() == QEvent::MouseButtonRelease)
{
ui.userName_lineEdit->selectAll();
}
}
当然了,把这两个合起来就支持 tab 和鼠标点击来全选内容了
bool XXX::eventFilter(QObject * watched, QEvent * event)
{
if (watched == ui.userName_lineEdit)
{
if (event->type() == QEvent::FocusIn || event->type() == QEvent::MouseButtonRelease)
{
ui.userName_lineEdit->selectAll();
}
}
return QWidget::eventFilter(watched, event);
}