引用第4楼roywillow于2012-12-05 17:14发表的 回 3楼(xuxb) 的帖子 :
之后立刻向它postEvent一个mouseRelease相关的Event能办到吗?
我是这样做的做的
bool QBaseTitleBar::eventFilter(QObject *obj, QEvent *event)
{
//按钮状态
eBtnMoustState eState = eBtnStateNone;
//判断事件类型--QEvent::Enter 相当于Hover状态 即鼠标放上去的状态
if (event->type() == QEvent::Enter)
{
eState = eBtnStateHover;
}
//判断事件类型--QEvent::Leave
if (event->type() == QEvent::Leave ||
event->type() == QEvent::MouseButtonRelease)
{
eState = eBtnStateDefault;//恢复默认按钮状态
}
//判断事件类型--QEvent::MouseButtonPress
if (event->type() == QEvent::MouseButtonPress &&
((QMouseEvent*)(event))->button()== Qt::LeftButton)
{
eState = eBtnStatePress;
}
//判断目标
if(m_pBtnMenu == obj || m_pBtnMin == obj ||
m_pBtnMax == obj || m_pBtnClose == obj)
{
//如果状态有效
if(eState != eBtnStateNone)
{
//根据状态设置按钮图标
SetBtnIcon((QToolButton *)obj,eState);
return false; }
}
return QWidget::eventFilter(obj,event);}