QWidget本身是没有hover属性可以设置的,想要自定义一个hover效果,可以通过 eventFilter 来实现,
废话少说,先上代码
QPopupWgt::QPopupWgt(QWidget *parent)
: QWidget(parent)
{
//setMouseTracking(true);
this->setAttribute(Qt::WA_Hover, true);//开启悬停事件
this->installEventFilter(this); //安装事件过滤器
connect(this, SIGNAL(friendListEleHover(bool)), this, SLOT(friendListEleHoverSlot(bool)));
}
bool QPopupWgt::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::HoverEnter)
{
emit friendListEleHover(true);
return true;
}
else if (event->type() == QEvent::HoverLeave)
{
emit friendListEleHover(false);
return true;
}
return QWidget::eventFilter(obj, event);
}
void QPopupWgt::friendListEleHoverSlot(bool isHover)
{
if (isHover)
{
QPalette pal(this->palette());
pal.setColor(QPalette::Background, Qt::blue);
this->setAutoFillBackground(true);
this->setPalette(pal);
}
else
{
QPalette pal(this-&

本文介绍如何在Qt中通过eventFilter来创建自定义的鼠标悬停(hover)效果。首先在构造函数开启鼠标悬停事件并安装事件过滤器,接着重写eventFilter函数,监听HoverEnter和HoverLeave事件,发送信号并在槽函数中进行样式修改。这种方法也可应用于父窗口或其它控件,只需替换相应对象。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



