如何在QT中管理自定义QWidget容器的光标形状?

时间:2016-10-27 14:45:04

标签: c++ qt

如何为自定义QWidget容器设置自定义光标?

扩展上下文:

在实施自定义QWidget容器的过程中:

任意[Child]类的小部件QWidget都嵌入在另一个[Parent]中,这是我们的自定义容器:

[Parent] of type CustomContainer
   |
   |---> [Child] An arbitrary non-custom QWidget.

指向CustomContainer的某些区域时需要设置特殊鼠标光标,但Child需要保持正常光标。

尝试失败:

原则上,它可能是:

void mouseMoveEvent( QMouseEvent *ev)
{
    if (specialRect->contains(ev->pos())) setCursor(Qt::SizeVerCursor);
    else setCursor(Qt::ArrowCursor);
}

不幸的是,仅当光标直接位于mouseMoveEvent时才会收到[Parent],因此光标不会恢复为[Child]的原始形状。同样的规则适用于enterEventleaveEvent

另一种方法是设置事件过滤器,这对于应用程序来说不是问题,但是QWidget类应该IMO不会注册可能带来副作用的事件过滤器,从而减慢应用程序等。

0 个答案:

没有答案