我的窗口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");
}