我的eventFilter没有按预期工作。我要么误解了它的行为,要么在我的程序中遇到问题。 在我的程序中,我有一个QScrollArea,里面有一个QLabel来显示一个Image(就像在Qt图像查看器示例中一样),但是如果用户滚动他的MouseWheel,我不希望ScrollArea滚动,但是Image要扩展。因此,我为我的Label和我的ScrollArea实现了一个eventFilter。
bool RBDP::eventFilter(QObject *target, QEvent *event)
{
if (target == scrollArea || target == iv) {
if (event->type() == QEvent::Wheel) {
QWheelEvent *w = static_cast<QWheelEvent *>(event);
iv->scaleImage(w->delta());
return true;
}
我知道滚动时eventFilter实际上会被触发。问题是ScrollArea也滚动,即如果你使用MouseWheel,图像比例和ScrollArea滚动! 据我所知,如果eventFilter返回true,则事件不应传播到其原始目标。 我在我的主类eventFilters中安装了scrollArea和iv(这是我的QLabel)。
scrollArea->installEventFilter(this);
iv->installEventFilter(this);
如何阻止ScrollArea滚动?我知道这不是很多代码,但程序有点复杂,我不知道,还有什么可以很有用。如果您需要查看其他代码段,请告诉我。 提前致谢