当我将鼠标悬停在qt中的不同按钮上时,如何更改标签文本



我的窗口qt应用程序中有5个按钮。我想设置一个标签文本,这是将鼠标悬停在按钮上方时每个进程的描述。我该怎么做?

我们可以为此使用 eventFilter 来做到这一点。

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
  if (obj == (QObject*)ui->pushButton) {
    if (event->type() == QEvent::Enter)
    {
        ui->label_3->setText("Your text");
    }
    else if (event->type() == QEvent::Leave){
        //Clear text when mouse leaves
        ui->label_3->setText("");
    }
    return QWidget::eventFilter(obj, event);
  }
  else    return QWidget::eventFilter(obj, event);
}

QEvent::HoverEnter 和 QEvent::HoverLeave 可以为您做到这一点。在您的QPushButton上设置一个事件过滤器(https://doc.qt.io/qt-5/eventsandfilters.html(,您就可以开始了。

假设您在UI中使用QPushButton,则可以重新实现以下方法:

virtual void enterEvent(QEvent *e)
{        
    setText("mouse in");
}
virtual void leaveEvent(QEvent *e)
{       
    setText("mouse out");
}

相关内容

  • 没有找到相关文章

最新更新