我在QLabel上遇到悬停功能问题。 我已将其实现为事件过滤器:
HoverLabel::HoverLabel(QWidget *parent) : QWidget(parent)
{
installEventFilter(this);
label = (QLabel *)parent;
show();
}
bool HoverLabel::eventFilter(QObject *object, QEvent *event)
{
if (object == this)
{
if (event->type() == QEvent::Enter)
{
label->setText("Howering");
return true;
}
else if (event->type() == QEvent::Leave)
{
label->setText("Not howering");
return true;
}
}
return false;
}
主构造函数运行时调用:
hoverLabels[0] = new HoverLabel(ui->hoverLabel_1);
现在一切正常,除了我的ger QEvent :: Enter的区域太小而且更多,常量 - 你可以将标签的大小加倍,生成事件的区域保持不变。
我用蓝色矩形标记了图片上的悬停区域,因为鼠标由于某种原因未被捕获。除此之外,它还说“不畏惧”。我尝试了各种文本内容,各种文字大小,检查所有方框,设置不同大小的政策,但区域仍然相同。
答案 0 :(得分:0)
简而言之,该类必须覆盖eventFilter。在我的案例中,类称为PlayerLabel。
请参阅以下2个文件,了解如何:
另见以后如何创建此对象: https://github.com/metthal/ICP-Projekt/blob/1f0a0f6e919d132bbec6bacd1cff91a3a596460d/src/gui/mainwindow.cpp#L358